X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=libcfs%2Flibcfs%2Flinux%2Flinux-curproc.c;h=fee47a23fc0a5654361607ce53c7fdda0a8256d8;hp=92c48d947e10c04261ccbfb669fb1774ba4a8eb8;hb=6488c0ec57de2d188bd15e502917b762e3a9dd1d;hpb=e3bc6e681666aa2c60ada5f997966efa31fae68c diff --git a/libcfs/libcfs/linux/linux-curproc.c b/libcfs/libcfs/linux/linux-curproc.c index 92c48d9..fee47a2 100644 --- a/libcfs/libcfs/linux/linux-curproc.c +++ b/libcfs/libcfs/linux/linux-curproc.c @@ -262,9 +262,14 @@ int cfs_get_environ(const char *key, char *value, int *val_len) !memcmp(entry, key, key_len)) { entry += key_len + 1; entry_len -= key_len + 1; - /* The 'value' buffer passed in is too small.*/ - if (entry_len >= *val_len) + + /* The 'value' buffer passed in is too small. + * Copy what fits, but return -EOVERFLOW. */ + if (entry_len >= *val_len) { + memcpy(value, entry, *val_len); + value[*val_len - 1] = 0; GOTO(out, rc = -EOVERFLOW); + } memcpy(value, entry, entry_len); *val_len = entry_len;