diff options
Diffstat (limited to 'xlators')
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-store.c | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-store.c b/xlators/mgmt/glusterd/src/glusterd-store.c index b9177b3c0..a70256c39 100644 --- a/xlators/mgmt/glusterd/src/glusterd-store.c +++ b/xlators/mgmt/glusterd/src/glusterd-store.c @@ -232,6 +232,7 @@ glusterd_store_is_valid_brickpath (char *volname, char *brick)          glusterd_brickinfo_t    *brickinfo = NULL;          glusterd_volinfo_t      *volinfo = NULL;          int32_t                 ret = 0; +        size_t                  volname_len = strlen (volname);          ret = glusterd_brickinfo_from_brick (brick, &brickinfo);          if (ret) { @@ -245,7 +246,12 @@ glusterd_store_is_valid_brickpath (char *volname, char *brick)                  ret = 0;                  goto out;          } -        strncpy (volinfo->volname, volname, sizeof (volinfo->volname)); +        if (volname_len >= sizeof (volinfo->volname)) { +                gf_log ("", GF_LOG_WARNING, "volume name too long"); +                ret = 0; +                goto out; +        } +        memcpy (volinfo->volname, volname, volname_len+1);          glusterd_store_brickinfopath_set (volinfo, brickinfo, brickpath,                                                  sizeof (brickpath));  | 
