aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-tacacs.c
diff options
context:
space:
mode:
authorMartin Kaiser <wireshark@kaiser.cx>2013-09-07 10:02:46 +0000
committerMartin Kaiser <wireshark@kaiser.cx>2013-09-07 10:02:46 +0000
commit071f89e3b39b39f9e1a9afca521259cb6f46c33a (patch)
treef0b2169a78848fc2a847a27dfe4aaad80638d8b5 /epan/dissectors/packet-tacacs.c
parentc4f5a942d754b4044d65cc5006db76a497ae94f8 (diff)
coverity 1047692: check return value of inet_pton()
svn path=/trunk/; revision=51814
Diffstat (limited to 'epan/dissectors/packet-tacacs.c')
-rw-r--r--epan/dissectors/packet-tacacs.c13
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 )