app_osplookup: Avoid a format truncation.
authortraud <pabstraud@compuserve.com>
Sat, 4 Apr 2020 09:28:06 +0000 (11:28 +0200)
committerFriendly Automation <jenkins2@gerrit.asterisk.org>
Mon, 11 May 2020 10:27:37 +0000 (05:27 -0500)
Ensure that output buffers for the osp_convert_inout
function have sufficient space for additional data
such as brackets and ports.

ASTERISK-28804

Change-Id: Ie54c8241ff0cc653910539c2db00ff2a4869750b

apps/app_osplookup.c

index 78f573a..4e6e5df 100644 (file)
 #define OSP_SIZE_UUID          ((unsigned int)16)                      /* UUID size */
 #define OSP_SIZE_UUIDSTR       ((unsigned int)36)                      /* UUID string size */
 #define OSP_SIZE_QOSSTR                ((unsigned int)1024)            /* QoS string buffer size */
+#define OSP_SIZE_OUTSTR                ((unsigned int)288)             /* OSP out size for osp_convert_inout */
 
 /* Call ID Type*/
 #define OSP_CALLID_UNDEF       ((unsigned int)0)                       /* Undefined */
@@ -1089,8 +1090,8 @@ static int osp_validate_token(
        int res;
        int tokenlen;
        unsigned char tokenstr[OSP_SIZE_TOKSTR];
-       char src[OSP_SIZE_NORSTR];
-       char dest[OSP_SIZE_NORSTR];
+       char src[OSP_SIZE_OUTSTR];
+       char dest[OSP_SIZE_OUTSTR];
        unsigned int authorised;
        unsigned int dummy = 0;
        int error;
@@ -1518,14 +1519,14 @@ static int osp_lookup(
        char* tmp;
        unsigned int tokenlen;
        char token[OSP_SIZE_TOKSTR];
-       char src[OSP_SIZE_NORSTR];
-       char dev[OSP_SIZE_NORSTR];
-       char host[OSP_SIZE_NORSTR];
+       char src[OSP_SIZE_OUTSTR];
+       char dev[OSP_SIZE_OUTSTR];
+       char host[OSP_SIZE_OUTSTR];
        unsigned int i, type;
        struct osp_callid callid;
        unsigned int callidnum;
        OSPT_CALL_ID* callids[OSP_CALLID_MAXNUM];
-       char dest[OSP_SIZE_NORSTR];
+       char dest[OSP_SIZE_OUTSTR];
        const char* preferred[2] = { NULL };
        unsigned int dummy = 0;
        OSPEFAILREASON reason;