mirror of
https://github.com/darlinghq/cctools-port.git
synced 2025-02-17 07:37:44 +00:00
strip: don't crash with -D_FORTIFY_SOURCE enabled (ubuntu gcc)
This commit is contained in:
parent
268c3de73b
commit
5098fc9f6d
@ -889,14 +889,34 @@ enum bool all_archs)
|
||||
archs[i].toc_long_name = TRUE;
|
||||
}
|
||||
if(archs[i].members[j].object != NULL){
|
||||
char tmp[32]; /* cctools-port */
|
||||
int len; /* cctools-port */
|
||||
size +=
|
||||
rnd(archs[i].members[j].object->object_size -
|
||||
archs[i].members[j].object->input_sym_info_size +
|
||||
archs[i].members[j].object->output_sym_info_size,
|
||||
8);
|
||||
#if 0
|
||||
/*
|
||||
* cctools-port: This causes a crash with
|
||||
* -D_FORTIFY_SOURCE enabled ('\0' "overflows" the
|
||||
* buffer).
|
||||
*/
|
||||
sprintf(archs[i].members[j].ar_hdr->ar_size, "%-*ld",
|
||||
(int)sizeof(archs[i].members[j].ar_hdr->ar_size),
|
||||
(long)(size));
|
||||
#endif
|
||||
/* cctools-port start */
|
||||
len = sprintf(tmp, "%-*ld",
|
||||
(int)sizeof(archs[i].members[j].ar_hdr->ar_size),
|
||||
(long)(size));
|
||||
if(len !=
|
||||
(int)sizeof(archs[i].members[j].ar_hdr->ar_size)){
|
||||
fprintf(stderr, "corrupted object file\n");
|
||||
abort();
|
||||
}
|
||||
memcpy(&archs[i].members[j].ar_hdr->ar_size, tmp, len);
|
||||
/* cctools-port end */
|
||||
/*
|
||||
* This has to be done by hand because sprintf puts a
|
||||
* null at the end of the buffer.
|
||||
|
Loading…
x
Reference in New Issue
Block a user