Unified · Split
| @@ -262,7 +262,8 @@ static void * add_lc(struct macho *mo, uint32_t cmd, uint32_t cmdsize) · 261 unmodified lines | |||
| 262 | static struct segment_command_64 * add_segment(struct macho *mo, const char *name) | 262 | static struct segment_command_64 * add_segment(struct macho *mo, const char *name) |
| 263 | { | 263 | { |
| 264 | struct segment_command_64 *sc = add_lc(mo, LC_SEGMENT_64, sizeof(*sc)); | 264 | struct segment_command_64 *sc = add_lc(mo, LC_SEGMENT_64, sizeof(*sc)); |
| 265 | strncpy(sc->segname, name, 16); | 265 | strncpy(sc->segname, name, 16-1); |
| 266 | sc->segname[16-1] = '\0'; | ||
| 266 | mo->seg2lc[mo->nseg++] = mo->nlc - 1; | 267 | mo->seg2lc[mo->nseg++] = mo->nlc - 1; |
| 267 | return sc; | 268 | return sc; |
| 268 | } | 269 | } |
| @@ -282,7 +283,8 @@ static int add_section(struct macho *mo, struct segment_command_64 **_seg, const · 13 unmodified lines | |||
| 282 | seg = tcc_realloc(seg, sizeof(*seg) + seg->nsects * sizeof(*sec)); | 283 | seg = tcc_realloc(seg, sizeof(*seg) + seg->nsects * sizeof(*sec)); |
| 283 | sec = (struct section_64*)((char*)seg + sizeof(*seg)) + ret; | 284 | sec = (struct section_64*)((char*)seg + sizeof(*seg)) + ret; |
| 284 | memset(sec, 0, sizeof(*sec)); | 285 | memset(sec, 0, sizeof(*sec)); |
| 285 | strncpy(sec->sectname, name, 16); | 286 | strncpy(sec->sectname, name, 16-1); |
| 287 | sec->sectname[16-1] = '\0'; | ||
| 286 | strncpy(sec->segname, seg->segname, 16); | 288 | strncpy(sec->segname, seg->segname, 16); |
| 287 | *_seg = seg; | 289 | *_seg = seg; |
| 288 | return ret; | 290 | return ret; |