diff options
author | Martin Kaiser <wireshark@kaiser.cx> | 2013-09-07 10:02:46 +0000 |
---|---|---|
committer | Martin Kaiser <wireshark@kaiser.cx> | 2013-09-07 10:02:46 +0000 |
commit | 071f89e3b39b39f9e1a9afca521259cb6f46c33a (patch) | |
tree | f0b2169a78848fc2a847a27dfe4aaad80638d8b5 | |
parent | c4f5a942d754b4044d65cc5006db76a497ae94f8 (diff) |
coverity 1047692: check return value of inet_pton()
svn path=/trunk/; revision=51814
-rw-r--r-- | epan/dissectors/packet-tacacs.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/epan/dissectors/packet-tacacs.c b/epan/dissectors/packet-tacacs.c index bdf5b3c64a..6028bff1ed 100644 --- a/epan/dissectors/packet-tacacs.c +++ b/epan/dissectors/packet-tacacs.c @@ -95,6 +95,8 @@ static gboolean tacplus_preference_desegment = TRUE; static const char *tacplus_opt_key; static GSList *tacplus_keys = NULL; +#define ADDR_INVLD "invalid" + #define VERSION_TACACS 0x00 #define VERSION_XTACACS 0x80 @@ -814,12 +816,19 @@ find_key( address *srv, address *cln ) static void mkipv4_address( address **addr, const char *str_addr ) { + int ret; char *addr_data; *addr=(address *)g_malloc( sizeof(address) ); addr_data=(char *)g_malloc( 4 ); - inet_pton( AF_INET, str_addr, addr_data ); - SET_ADDRESS(*addr, AT_IPv4, 4, addr_data); + ret = inet_pton( AF_INET, str_addr, addr_data ); + /* brackets are required here, otherwise the semicolon would terminate + the if-else */ + if (ret==1) { + SET_ADDRESS(*addr, AT_IPv4, 4, addr_data); + } + else + SET_ADDRESS(*addr, AT_STRINGZ, (int)strlen(ADDR_INVLD)+1, ADDR_INVLD); } static void parse_tuple( char *key_from_option ) |