From: John L. Hammond Date: Tue, 7 Jul 2015 15:08:18 +0000 (-0500) Subject: LU-6803 gss: add printf format checking to __logmsg{,_gss}() X-Git-Tag: 2.7.58~62 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=4817574ad5a31d6dbafc2bd0dfc2b6a33851ea11 LU-6803 gss: add printf format checking to __logmsg{,_gss}() Add printf format checking to the gss error reporting functions __logmsg() and __logmsg_gss(). Fixup all errors so discovered. Signed-off-by: John L. Hammond Change-Id: Ie1526e0189f0b4e43d6bd3dcecb53574945f40d1 Reviewed-on: http://review.whamcloud.com/15524 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Dmitry Eremin Reviewed-by: James Simmons Reviewed-by: Oleg Drokin --- diff --git a/lustre/utils/gss/lgss_keyring.c b/lustre/utils/gss/lgss_keyring.c index 17c770e..93b6305 100644 --- a/lustre/utils/gss/lgss_keyring.c +++ b/lustre/utils/gss/lgss_keyring.c @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -160,7 +161,7 @@ int do_nego_rpc(struct lgss_nego_data *lnd, ret = write(fd, ¶m, sizeof(param)); if (ret != sizeof(param)) { - logmsg(LL_ERR, "lustre ioctl err: %d\n", strerror(errno)); + logmsg(LL_ERR, "lustre ioctl err: %s\n", strerror(errno)); close(fd); return -EACCES; } @@ -168,8 +169,8 @@ int do_nego_rpc(struct lgss_nego_data *lnd, logmsg(LL_TRACE, "do_nego_rpc: to parse reply\n"); if (param.status) { - logmsg(LL_ERR, "status: %d (%s)\n", - param.status, strerror((int)param.status)); + logmsg(LL_ERR, "status: %ld (%s)\n", + param.status, strerror((int)param.status)); /* kernel return -ETIMEDOUT means the rpc timedout, we should * notify the caller to reinitiate the gss negotiation, by @@ -197,7 +198,7 @@ int do_nego_rpc(struct lgss_nego_data *lnd, memcpy(gr->gr_token.value, p, gr->gr_token.length); p += (((gr->gr_token.length + 3) & ~3) / 4); - logmsg(LL_DEBUG, "do_nego_rpc: receive handle len %d, token len %d, " \ + logmsg(LL_DEBUG, "do_nego_rpc: receive handle len %zu, token len %zu, " "res %d\n", gr->gr_ctx.length, gr->gr_token.length, res); return 0; } @@ -475,10 +476,10 @@ static int lgssc_kr_negotiate(key_serial_t keyid, struct lgss_cred *cred, OM_uint32 min_stat; int rc = -1; - logmsg(LL_TRACE, "child start on behalf of key %08x: " - "cred %p, uid %u, svc %u, nid %llx, uids: %u:%u/%u:%u\n", - keyid, cred, cred->lc_uid, cred->lc_tgt_svc, cred->lc_tgt_nid, - kup->kup_uid, kup->kup_gid, kup->kup_fsuid, kup->kup_fsgid); + logmsg(LL_TRACE, "child start on behalf of key %08x: " + "cred %p, uid %u, svc %u, nid %"PRIx64", uids: %u:%u/%u:%u\n", + keyid, cred, cred->lc_uid, cred->lc_tgt_svc, cred->lc_tgt_nid, + kup->kup_uid, kup->kup_gid, kup->kup_fsuid, kup->kup_fsgid); if (lgss_get_service_str(&g_service, kup->kup_svc, kup->kup_nid)) { logmsg(LL_ERR, "key %08x: failed to construct service " @@ -594,8 +595,8 @@ static int parse_callout_info(const char *coinfo, uparam->kup_selfnid = strtoll(data[8], NULL, 0); logmsg(LL_DEBUG, "parse call out info: secid %d, mech %s, ugid %u:%u, " - "is_root %d, is_mdt %d, is_ost %d, svc %d, nid 0x%llx, tgt %s, " - "self nid 0x%llx\n", + "is_root %d, is_mdt %d, is_ost %d, svc %d, nid 0x%"PRIx64", " + "tgt %s, self nid 0x%"PRIx64"\n", uparam->kup_secid, uparam->kup_mech, uparam->kup_uid, uparam->kup_gid, uparam->kup_is_root, uparam->kup_is_mdt, uparam->kup_is_ost, diff --git a/lustre/utils/gss/lgss_krb5_utils.c b/lustre/utils/gss/lgss_krb5_utils.c index 0e34021..db5aab3 100644 --- a/lustre/utils/gss/lgss_krb5_utils.c +++ b/lustre/utils/gss/lgss_krb5_utils.c @@ -255,7 +255,7 @@ int svc_princ_verify_host(krb5_context ctx, if (self_nid != 0) { if (lnet_nid2hostname(self_nid, namebuf, max_namelen)) { logmsg(loglevel, - "can't resolve hostname from nid %llx\n", + "can't resolve hostname from nid %"PRIx64"\n", self_nid); return -1; } @@ -444,15 +444,17 @@ int lkrb5_check_root_tgt_cc_base(krb5_context ctx, if (code != 0) break; - logmsg(LL_DEBUG, "cred: server realm %.*s, type %d, name %.*s; " - "time (%d-%d, renew till %d), valid %d\n", - krb5_princ_realm(ctx, cred.server)->length, - krb5_princ_realm(ctx, cred.server)->data, - krb5_princ_type(ctx, cred.server), - krb5_princ_name(ctx, cred.server)->length, - krb5_princ_name(ctx, cred.server)->data, - cred.times.starttime, cred.times.endtime, - cred.times.renew_till, cred.times.endtime - now); + logmsg(LL_DEBUG, "cred: server realm %.*s, type %d, name %.*s; " + "time (%lld-%lld, renew till %lld), valid %lld\n", + krb5_princ_realm(ctx, cred.server)->length, + krb5_princ_realm(ctx, cred.server)->data, + krb5_princ_type(ctx, cred.server), + krb5_princ_name(ctx, cred.server)->length, + krb5_princ_name(ctx, cred.server)->data, + (long long)cred.times.starttime, + (long long)cred.times.endtime, + (long long)cred.times.renew_till, + (long long)(cred.times.endtime - now)); /* FIXME * we found the princ type is always 0 (KRB5_NT_UNKNOWN), why??? diff --git a/lustre/utils/gss/lgss_utils.c b/lustre/utils/gss/lgss_utils.c index e4f6d64..6f13f8f 100644 --- a/lustre/utils/gss/lgss_utils.c +++ b/lustre/utils/gss/lgss_utils.c @@ -430,7 +430,8 @@ int lgss_get_service_str(char **string, uint32_t lsvc, uint64_t tgt_nid) } if (lnet_nid2hostname(tgt_nid, namebuf, max_namelen)) { - logmsg(LL_ERR,"can't resolve hostname from nid %llx\n",tgt_nid); + logmsg(LL_ERR, "cannot resolve hostname from nid %"PRIx64"\n", + tgt_nid); return -1; } diff --git a/lustre/utils/gss/lgss_utils.h b/lustre/utils/gss/lgss_utils.h index eaa30cd..51a8f45 100644 --- a/lustre/utils/gss/lgss_utils.h +++ b/lustre/utils/gss/lgss_utils.h @@ -94,9 +94,12 @@ extern loglevel_t g_log_level; void lgss_set_loglevel(loglevel_t level); -void __logmsg(loglevel_t level, const char *func, const char *format, ...); +void __logmsg(loglevel_t level, const char *func, const char *format, ...) + __attribute__((format(printf, 3, 4))); + void __logmsg_gss(loglevel_t level, const char *func, const gss_OID mech, - uint32_t major, uint32_t minor, const char *format, ...); + uint32_t major, uint32_t minor, const char *format, ...) + __attribute__((format(printf, 6, 7))); #define logmsg(loglevel, format, args...) \ do { \ @@ -125,8 +128,8 @@ do { \ #define printerr(priority, format, args...) \ logmsg(priority, format, ##args) -#define pgsserr(msg, maj_stat, min_stat, mech) \ - logmsg_gss(LL_ERR, mech, maj_stat, min_stat, "") +#define pgsserr(msg, maj_stat, min_stat, mech) \ + logmsg_gss(LL_ERR, mech, maj_stat, min_stat, msg) /**************************************** * GSS MECH, OIDs *