diff options
| author | Jim Meyering <meyering@redhat.com> | 2012-06-19 12:30:21 +0200 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2012-07-02 15:34:20 -0700 | 
| commit | 528d94380bb9e45ebc4f09d532085476f87f32cc (patch) | |
| tree | 4c74fb1981551c48afd3888afefd639a271b7037 | |
| parent | b9fd37b8a4973929bf3d5e756a1aa4fc803e8c27 (diff) | |
glusterd-rpc-ops: avoid buffer overrun for over-long key
strncpy explicitly does not NUL-terminate when source string
has length >= the length specified via strncpy's 3rd argument.
Assuming strncpy is justified (i.e., that it may truncate),
be sure to NUL-terminate its destination buffer.
Change-Id: Ia67bf136cdfae6d9850f673923c01baa3cdef9d8
BUG: 789278
Signed-off-by: Jim Meyering <meyering@redhat.com>
Reviewed-on: http://review.gluster.com/3592
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-rpc-ops.c | 4 | 
1 files changed, 3 insertions, 1 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c b/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c index 240f808fe25..cbe4c05dadd 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-rpc-ops.c @@ -1033,8 +1033,10 @@ glusterd_volume_status_add_peer_rsp (dict_t *this, char *key, data_t *value,          if (index > rsp_ctx->brick_index_max) {                  snprintf (new_key, sizeof (new_key), "brick%d.%s",                            index + rsp_ctx->other_count, brick_key); -        } else +        } else {                  strncpy (new_key, key, sizeof (new_key)); +                new_key[sizeof (new_key) - 1] = 0; +        }          ret = dict_set (rsp_ctx->dict, new_key, new_value);          if (ret)  | 
