Bug fix: xorriso -update_r could lead to SIGSEGV if applied to a data file
This commit is contained in:
parent
4374d984d1
commit
f4507fca34
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2010.02.18.125019"
|
#define Xorriso_timestamP "2010.02.19.172125"
|
||||||
|
@ -8176,15 +8176,18 @@ int Xorriso_findi(struct XorrisO *xorriso, struct FindjoB *job,
|
|||||||
if(job->prune)
|
if(job->prune)
|
||||||
no_dive= 1;
|
no_dive= 1;
|
||||||
if(ret>0) {
|
if(ret>0) {
|
||||||
|
iso_node_ref(iso_node); /* protect from real disposal */
|
||||||
ret= Xorriso_findi_action(xorriso, job,
|
ret= Xorriso_findi_action(xorriso, job,
|
||||||
(IsoDirIter *) boss_iter, boss_mem,
|
(IsoDirIter *) boss_iter, boss_mem,
|
||||||
path, dir_path, (IsoNode *) dir_node, depth,
|
path, dir_path, iso_node, depth,
|
||||||
flag&(1|2));
|
flag&(1|2));
|
||||||
|
deleted= (iso_node_get_parent(iso_node) == NULL); /* still in tree ? */
|
||||||
|
iso_node_unref(iso_node); /* eventually do real disposal */
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
if(xorriso->request_to_abort)
|
if(xorriso->request_to_abort)
|
||||||
{ret= 0; goto ex;}
|
{ret= 0; goto ex;}
|
||||||
if(ret==2) {
|
if(ret==2 || deleted) {
|
||||||
/* re-determine dir_node in case it has a new persona */
|
/* re-determine dir_node in case it has a new persona */
|
||||||
ret= Xorriso_node_from_path(xorriso, volume, path, &iso_node, 1);
|
ret= Xorriso_node_from_path(xorriso, volume, path, &iso_node, 1);
|
||||||
if(ret==0) {
|
if(ret==0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user