Bug fix: Use of freed memory with -hardlinks on and -update
This commit is contained in:
parent
2606a34ba8
commit
d69de85874
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2009.07.25.181857"
|
#define Xorriso_timestamP "2009.08.03.075954"
|
||||||
|
@ -7443,6 +7443,8 @@ int Xorriso_report_damage(struct XorrisO *xorriso, char *show_path,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* @return see Xorriso_update_interpreter()
|
||||||
|
*/
|
||||||
int Xorriso_widen_hardlink(struct XorrisO *xorriso, void * boss_iter,
|
int Xorriso_widen_hardlink(struct XorrisO *xorriso, void * boss_iter,
|
||||||
IsoNode *node,
|
IsoNode *node,
|
||||||
char *abs_path, char *iso_prefix, char *disk_prefix,
|
char *abs_path, char *iso_prefix, char *disk_prefix,
|
||||||
@ -7479,7 +7481,7 @@ int Xorriso_widen_hardlink(struct XorrisO *xorriso, void * boss_iter,
|
|||||||
abs_path, 1);
|
abs_path, 1);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
return(ret);
|
return(ret);
|
||||||
return 1;
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -7584,6 +7586,8 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
|
|||||||
Findjob_get_start_path(job, &iso_prefix, 0);
|
Findjob_get_start_path(job, &iso_prefix, 0);
|
||||||
ret= Xorriso_widen_hardlink(xorriso, (void *) boss_iter, node, abs_path,
|
ret= Xorriso_widen_hardlink(xorriso, (void *) boss_iter, node, abs_path,
|
||||||
iso_prefix, target, 0);
|
iso_prefix, target, 0);
|
||||||
|
if(ret==2)
|
||||||
|
deleted= 1;
|
||||||
|
|
||||||
} else { /* includes : 15 in_iso */
|
} else { /* includes : 15 in_iso */
|
||||||
sprintf(xorriso->result_line, "%s\n", Text_shellsafe(show_path, sfe, 0));
|
sprintf(xorriso->result_line, "%s\n", Text_shellsafe(show_path, sfe, 0));
|
||||||
@ -11998,7 +12002,7 @@ int Xorriso_hardlink_update(struct XorrisO *xorriso, int *compare_result,
|
|||||||
/* Handle eventual hardlink split : */
|
/* Handle eventual hardlink split : */
|
||||||
/* This is achieved by setting the content change bit. Reason:
|
/* This is achieved by setting the content change bit. Reason:
|
||||||
The node needs to be removed from di_array because its di is
|
The node needs to be removed from di_array because its di is
|
||||||
not matching it array index any more. So it becomes invisible for
|
not matching its array index any more. So it becomes invisible for
|
||||||
the join check of eventual later hardlink siblings. Therefore
|
the join check of eventual later hardlink siblings. Therefore
|
||||||
it must be updated now, even if it has currently no siblings
|
it must be updated now, even if it has currently no siblings
|
||||||
which it leaves or which it joins.
|
which it leaves or which it joins.
|
||||||
@ -12114,7 +12118,7 @@ int Xorriso_finish_hl_update(struct XorrisO *xorriso, int flag)
|
|||||||
{ret= 1; goto ex;}
|
{ret= 1; goto ex;}
|
||||||
disk_lst= xorriso->di_disk_paths;
|
disk_lst= xorriso->di_disk_paths;
|
||||||
iso_lst= xorriso->di_iso_paths;
|
iso_lst= xorriso->di_iso_paths;
|
||||||
while(disk_lst != 0 && iso_lst != NULL) {
|
while(disk_lst != NULL && iso_lst != NULL) {
|
||||||
argv[0]= Xorriso_lst_get_text(iso_lst, 0);
|
argv[0]= Xorriso_lst_get_text(iso_lst, 0);
|
||||||
argv[1]= "-exec";
|
argv[1]= "-exec";
|
||||||
argv[2]= "widen_hardlinks";
|
argv[2]= "widen_hardlinks";
|
||||||
|
Loading…
Reference in New Issue
Block a user