In file included from ../../../../src/lib/krb5/krb/recvauth.c:31: ../../../../src/lib/krb5/krb/recvauth.c: In function ‘recvauth_common’: ../../../../src/lib/krb5/krb/../../../include/k5-int.h:1670:25: warning: double-‘free’ of ‘inbuf.data’ [CWE-415] [-Wanalyzer-double-free] 1670 | #define krb5_xfree(val) free((char *)(val)) | ^~~~~~~~~~~~~~~~~~~ ../../../../src/lib/krb5/krb/recvauth.c:82:6: note: in expansion of macro ‘krb5_xfree’ 82 | krb5_xfree(inbuf.data); | ^~~~~~~~~~ ‘krb5_recvauth_version’: events 1-2 | | 256 | krb5_recvauth_version(krb5_context context, | | ^~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to ‘krb5_recvauth_version’ |...... | 267 | return recvauth_common (context, auth_context, fd, 0, | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling ‘recvauth_common’ from ‘krb5_recvauth_version’ | 268 | server, flags, keytab, ticket, version); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | +--> ‘recvauth_common’: events 3-8 | | 41 | recvauth_common(krb5_context context, | | ^~~~~~~~~~~~~~~ | | | | | (3) entry to ‘recvauth_common’ |...... | 72 | if (!(flags & KRB5_RECVAUTH_SKIP_VERSION)) { | | ~ | | | | | (4) following ‘true’ branch... |...... | 76 | if ((retval = krb5_read_message(context, fd, &inbuf))) | | ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | | | (5) ...to here | | (6) following ‘false’ branch (when ‘retval == 0’)... | 77 | return(retval); | 78 | if (strcmp(inbuf.data, sendauth_version)) { | | ~ ~~~~~~~~~~ | | | | | | | (7) ...to here | | (8) following ‘true’ branch (when the strings are non-equal)... | ‘recvauth_common’: event 9 | |../../../../src/lib/krb5/krb/../../../include/k5-int.h:1670:30: | 1670 | #define krb5_xfree(val) free((char *)(val)) | | ^~~~~~~~~~~~~ | | | | | (9) ...to here ../../../../src/lib/krb5/krb/recvauth.c:79:3: note: in expansion of macro ‘krb5_xfree’ | 79 | krb5_xfree(inbuf.data); | | ^~~~~~~~~~ | ‘recvauth_common’: event 10 | |../../../../src/lib/krb5/krb/../../../include/k5-int.h:1670:30: | 1670 | #define krb5_xfree(val) free((char *)(val)) | | ^~~~~~~~~~~~~ | | | | | (10) first ‘free’ here ../../../../src/lib/krb5/krb/recvauth.c:79:3: note: in expansion of macro ‘krb5_xfree’ | 79 | krb5_xfree(inbuf.data); | | ^~~~~~~~~~ | ‘recvauth_common’: event 11 | |../../../../src/lib/krb5/krb/../../../include/k5-int.h:1670:25: | 1670 | #define krb5_xfree(val) free((char *)(val)) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (11) second ‘free’ here; first ‘free’ was at (10) ../../../../src/lib/krb5/krb/recvauth.c:82:6: note: in expansion of macro ‘krb5_xfree’ | 82 | krb5_xfree(inbuf.data); | | ^~~~~~~~~~ | ../../../../src/lib/krb5/krb/../../../include/k5-int.h:1670:25: warning: double-‘free’ of ‘inbuf.data’ [CWE-415] [-Wanalyzer-double-free] 1670 | #define krb5_xfree(val) free((char *)(val)) | ^~~~~~~~~~~~~~~~~~~ ../../../../src/lib/krb5/krb/recvauth.c:100:6: note: in expansion of macro ‘krb5_xfree’ 100 | krb5_xfree(inbuf.data); | ^~~~~~~~~~ ‘krb5_recvauth’: events 1-2 | | 249 | krb5_recvauth(krb5_context context, krb5_auth_context *auth_context, krb5_pointer fd, char *appl_version, krb5_principal server, krb5_int32 flags, krb5_keytab keytab, krb5_ticket **ticket) | | ^~~~~~~~~~~~~ | | | | | (1) entry to ‘krb5_recvauth’ | 250 | { | 251 | return recvauth_common (context, auth_context, fd, appl_version, | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling ‘recvauth_common’ from ‘krb5_recvauth’ | 252 | server, flags, keytab, ticket, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | +--> ‘recvauth_common’: events 3-8 | | 41 | recvauth_common(krb5_context context, | | ^~~~~~~~~~~~~~~ | | | | | (3) entry to ‘recvauth_common’ |...... | 90 | if ((retval = krb5_read_message(context, fd, &inbuf))) | | ~ | | | | | (4) following ‘false’ branch (when ‘retval == 0’)... | 91 | return(retval); | 92 | if (appl_version && strcmp(inbuf.data, appl_version)) { | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | | | | | (7) ...to here | | | (8) following ‘true’ branch (when the strings are non-equal)... | | (5) ...to here | | (6) following ‘true’ branch (when ‘appl_version’ is non-NULL)... | ‘recvauth_common’: event 9 | |../../../../src/lib/krb5/krb/../../../include/k5-int.h:1670:30: | 1670 | #define krb5_xfree(val) free((char *)(val)) | | ^~~~~~~~~~~~~ | | | | | (9) ...to here ../../../../src/lib/krb5/krb/recvauth.c:93:3: note: in expansion of macro ‘krb5_xfree’ | 93 | krb5_xfree(inbuf.data); | | ^~~~~~~~~~ | ‘recvauth_common’: event 10 | |../../../../src/lib/krb5/krb/../../../include/k5-int.h:1670:30: | 1670 | #define krb5_xfree(val) free((char *)(val)) | | ^~~~~~~~~~~~~ | | | | | (10) first ‘free’ here ../../../../src/lib/krb5/krb/recvauth.c:93:3: note: in expansion of macro ‘krb5_xfree’ | 93 | krb5_xfree(inbuf.data); | | ^~~~~~~~~~ | ‘recvauth_common’: event 11 | | 97 | if (version && !problem) | | ^ | | | | | (11) following ‘false’ branch (when ‘version’ is NULL)... | ‘recvauth_common’: event 12 | |../../../../src/lib/krb5/krb/../../../include/k5-int.h:1670:30: | 1670 | #define krb5_xfree(val) free((char *)(val)) | | ^~~~~~~~~~~~~ | | | | | (12) ...to here ../../../../src/lib/krb5/krb/recvauth.c:100:6: note: in expansion of macro ‘krb5_xfree’ | 100 | krb5_xfree(inbuf.data); | | ^~~~~~~~~~ | ‘recvauth_common’: event 13 | |../../../../src/lib/krb5/krb/../../../include/k5-int.h:1670:25: | 1670 | #define krb5_xfree(val) free((char *)(val)) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (13) second ‘free’ here; first ‘free’ was at (10) ../../../../src/lib/krb5/krb/recvauth.c:100:6: note: in expansion of macro ‘krb5_xfree’ | 100 | krb5_xfree(inbuf.data); | | ^~~~~~~~~~ |