From: Kefu Chai Date: Thu, 24 Jun 2021 05:05:22 +0000 (+0800) Subject: common/armor: mark dst_end a const pointer X-Git-Tag: v17.1.0~1529^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=ab709e0c22f15fb0b2ee7f71a8e0b32d4316fe8f;p=ceph-ci.git common/armor: mark dst_end a const pointer to silence GCC-11 warnings like: ../src/common/secret.c: In function ‘set_kernel_secret’: ../src/common/secret.c:65:9: warning: ‘’ may be used uninitialized [-Wmaybe-uninitialized] 65 | ret = ceph_unarmor(payload, payload+sizeof(payload), secret, secret+secret_len); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../src/common/secret.c:23: ../src/common/armor.h:14:5: note: by argument 2 of type ‘const char *’ to ‘ceph_unarmor’ declared here 14 | int ceph_unarmor(char *dst, const char *dst_end, | ^~~~~~~~~~~~ see also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100417 this warning is false positive. but it's still annoying. since semantically, we are changing the dst buffer, and the dst_end specify the non-inclusive upper bound of the output buffer, this change is not quite wrong by changing the type of this pointer from a pointer to a const char to a constant pointer to a (mutable) char. Signed-off-by: Kefu Chai --- diff --git a/src/common/armor.c b/src/common/armor.c index 706e01e7f22..3508b82e353 100644 --- a/src/common/armor.c +++ b/src/common/armor.c @@ -45,7 +45,7 @@ static int set_str_val(char **pdst, const char *end, char c) return 0; } -int ceph_armor_line_break(char *dst, const char *dst_end, const char *src, const char *end, int line_width) +int ceph_armor_line_break(char *dst, char * const dst_end, const char *src, const char *end, int line_width) { int olen = 0; int line = 0; @@ -91,12 +91,12 @@ int ceph_armor_line_break(char *dst, const char *dst_end, const char *src, const return olen; } -int ceph_armor(char *dst, const char *dst_end, const char *src, const char *end) +int ceph_armor(char *dst, char * const dst_end, const char *src, const char *end) { return ceph_armor_line_break(dst, dst_end, src, end, 0); } -int ceph_unarmor(char *dst, const char *dst_end, const char *src, const char *end) +int ceph_unarmor(char *dst, char * const dst_end, const char *src, const char *end) { int olen = 0; diff --git a/src/common/armor.h b/src/common/armor.h index 340b33aaf57..f0ee9f9b209 100644 --- a/src/common/armor.h +++ b/src/common/armor.h @@ -5,14 +5,14 @@ extern "C" { #endif -int ceph_armor(char *dst, const char *dst_end, - const char *src, const char *end); +int ceph_armor(char *dst, char * const dst_end, + const char * src, const char *end); -int ceph_armor_linebreak(char *dst, const char *dst_end, +int ceph_armor_linebreak(char *dst, char * const dst_end, const char *src, const char *end, int line_width); -int ceph_unarmor(char *dst, const char *dst_end, - const char *src, const char *end); +int ceph_unarmor(char *dst, char * const dst_end, + const char *src, const char * const end); #ifdef __cplusplus } #endif