diff options
Diffstat (limited to 'usr/src')
| -rw-r--r-- | usr/src/lib/libfru/libfruraw/fruraw.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/usr/src/lib/libfru/libfruraw/fruraw.c b/usr/src/lib/libfru/libfruraw/fruraw.c index 39d341486b..968a9bd053 100644 --- a/usr/src/lib/libfru/libfruraw/fruraw.c +++ b/usr/src/lib/libfru/libfruraw/fruraw.c @@ -549,10 +549,17 @@ frt_get_segment_name(fru_seghdl_t node, char **name) for (each_seg = 0; each_seg < num_segment; each_seg++) { if (segs[each_seg].handle == node) { - segs[each_seg].name[FRU_SEGNAMELEN] = '\0'; - *name = strdup(segs[each_seg].name); + *name = malloc(SEG_NAME_LEN + 1); + if (*name != NULL) { + (void) memcpy(*name, + segs[each_seg].name, + SEG_NAME_LEN); + *name[SEG_NAME_LEN] = '\0'; + } free(sects); free(segs); + if (*name == NULL) + return (FRU_FAILURE); return (FRU_SUCCESS); } } |
