Bug fix: Option -mkdir yielded SIGSEGV due to a NULL pointer
This commit is contained in:
parent
b8788e5f9e
commit
1ceb1097e1
@ -611,20 +611,30 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
|
|||||||
int target_is_split, hide_attrs;
|
int target_is_split, hide_attrs;
|
||||||
struct stat stbuf;
|
struct stat stbuf;
|
||||||
|
|
||||||
ret= Xorriso_path_is_excluded(xorriso, disk_path, !(flag&4));
|
if (disk_path == NULL && !(flag & 1)) {
|
||||||
if(ret<0)
|
Xorriso_msgs_submit(xorriso, 0,
|
||||||
return(ret);
|
"Program error: Xorriso_graft_in(): disk_path == NULL && !(flag & 1)",
|
||||||
if(ret>0)
|
0, "ABORT", 0);
|
||||||
return(3*!!(flag&16));
|
return(-1);
|
||||||
|
}
|
||||||
/* Check for mkisofs-style hidings */
|
if (disk_path == NULL) {
|
||||||
hide_attrs= (flag >> 8) & 3;
|
disk_path= "";
|
||||||
if(hide_attrs != 3) {
|
} else {
|
||||||
ret= Xorriso_path_is_hidden(xorriso, disk_path, 0);
|
ret= Xorriso_path_is_excluded(xorriso, disk_path, !(flag&4));
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
return(ret);
|
return(ret);
|
||||||
if(ret>=0)
|
if(ret>0)
|
||||||
hide_attrs|= ret;
|
return(3*!!(flag&16));
|
||||||
|
|
||||||
|
/* Check for mkisofs-style hidings */
|
||||||
|
hide_attrs= (flag >> 8) & 3;
|
||||||
|
if(hide_attrs != 3) {
|
||||||
|
ret= Xorriso_path_is_hidden(xorriso, disk_path, 0);
|
||||||
|
if(ret<0)
|
||||||
|
return(ret);
|
||||||
|
if(ret>=0)
|
||||||
|
hide_attrs|= ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(cpt= img_path; 1; cpt++) {
|
for(cpt= img_path; 1; cpt++) {
|
||||||
@ -638,10 +648,14 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(cpt!=NULL) {
|
if(cpt!=NULL) {
|
||||||
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
|
if(disk_path[0])
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"Unsupported relative addressing in iso_rr_path %s (disk: %s)",
|
"Unsupported relative addressing in iso_rr_path %s",
|
||||||
Text_shellsafe(img_path, sfe, 0), Text_shellsafe(disk_path, sfe2, 0));
|
Text_shellsafe(img_path, sfe, 0));
|
||||||
|
if(disk_path[0])
|
||||||
|
sprintf(xorriso->info_text + strlen(xorriso->info_text),
|
||||||
|
" (disk: %s)", Text_shellsafe(disk_path, sfe, 0));
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE", 0);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
@ -740,7 +754,8 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
|
|||||||
return(ret);
|
return(ret);
|
||||||
if(ret==3) {
|
if(ret==3) {
|
||||||
sprintf(xorriso->info_text, "User revoked adding of: %s",
|
sprintf(xorriso->info_text, "User revoked adding of: %s",
|
||||||
Text_shellsafe(disk_path, sfe, 0));
|
disk_path[0] ? Text_shellsafe(disk_path, sfe, 0)
|
||||||
|
: Text_shellsafe(img_path, sfe, 0));
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
return(3*!!(flag&16));
|
return(3*!!(flag&16));
|
||||||
}
|
}
|
||||||
@ -748,7 +763,8 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
|
|||||||
goto handle_path_node;
|
goto handle_path_node;
|
||||||
}
|
}
|
||||||
|
|
||||||
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
|
if (disk_path[0])
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"While grafting '%s' : '%s' exists and may not be overwritten",
|
"While grafting '%s' : '%s' exists and may not be overwritten",
|
||||||
img_path, path);
|
img_path, path);
|
||||||
@ -763,7 +779,8 @@ handle_path_node:;
|
|||||||
ret= iso_tree_add_new_dir(dir, apt, &hdir);
|
ret= iso_tree_add_new_dir(dir, apt, &hdir);
|
||||||
if(ret<0) {
|
if(ret<0) {
|
||||||
Xorriso_process_msg_queues(xorriso,0);
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
|
if(disk_path[0])
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
|
||||||
Xorriso_report_iso_error(xorriso, img_path, ret,
|
Xorriso_report_iso_error(xorriso, img_path, ret,
|
||||||
"Cannot create directory", 0, "FAILURE", 1);
|
"Cannot create directory", 0, "FAILURE", 1);
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
@ -777,7 +794,7 @@ handle_path_node:;
|
|||||||
iso_node_set_uid((IsoNode *) dir, geteuid());
|
iso_node_set_uid((IsoNode *) dir, geteuid());
|
||||||
iso_node_set_gid((IsoNode *) dir, getegid());
|
iso_node_set_gid((IsoNode *) dir, getegid());
|
||||||
|
|
||||||
if(disk_path!=NULL && !done)
|
if(disk_path[0] && !done)
|
||||||
/* This not only copies disk directory properties
|
/* This not only copies disk directory properties
|
||||||
but also sets eventual hide_attrs */
|
but also sets eventual hide_attrs */
|
||||||
Xorriso_copy_implicit_properties(xorriso, dir, img_path, path, disk_path,
|
Xorriso_copy_implicit_properties(xorriso, dir, img_path, path, disk_path,
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2011.01.26.210359"
|
#define Xorriso_timestamP "2011.01.31.135917"
|
||||||
|
Loading…
Reference in New Issue
Block a user