diff options
| -rw-r--r-- | xlators/storage/posix/src/posix-handle.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/xlators/storage/posix/src/posix-handle.c b/xlators/storage/posix/src/posix-handle.c index ab202d79dc9..7ab654316ee 100644 --- a/xlators/storage/posix/src/posix-handle.c +++ b/xlators/storage/posix/src/posix-handle.c @@ -295,13 +295,16 @@ posix_handle_pump (xlator_t *this, char *buf, int len, int maxlen,          }          blen = link_len - 48; + +        if(len + blen >= maxlen) +                goto err; +          memmove (buf + base_len + blen, buf + base_len,                   (strlen (buf) - base_len) + 1);          strncpy (base_str + pfx_len, linkname + 6, 42); -        if (len + blen < maxlen) -                strncpy (buf + pfx_len, linkname + 6, link_len - 6); +        strncpy (buf + pfx_len, linkname + 6, link_len - 6);  out:          return len + blen;  err:  | 
