From dbb261cce4090c5cb802fee7433a09964951ef94 Mon Sep 17 00:00:00 2001 From: omkar Date: Tue, 9 Dec 2014 16:57:23 -0800 Subject: [PATCH] Improve Buffer Size in occoaphelper Previously, we had the BUF_SIZE set at 64. Changing it to be the greater of MAX_URI_LENGTH and MAX_QUERY_LENGTH. So, if max length needs to change, we need to change it only in ocstackconfig. Change-Id: I18aeca83f82932896424d38389a872b581859860 Signed-off-by: omkar --- resource/csdk/occoap/include/occoaphelper.h | 7 ++++++- resource/csdk/occoap/src/occoaphelper.c | 6 +++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/resource/csdk/occoap/include/occoaphelper.h b/resource/csdk/occoap/include/occoaphelper.h index 7be3e30..2dc687e 100644 --- a/resource/csdk/occoap/include/occoaphelper.h +++ b/resource/csdk/occoap/include/occoaphelper.h @@ -35,7 +35,12 @@ #include "occoaptoken.h" #include "ocstackinternal.h" -#define BUF_SIZE (64) +/** + * The Max Size of the buffer that is used to parse uri and query + * individually. + */ +#define MAX_URI_QUERY_BUF_SIZE ((MAX_URI_LENGTH) >= (MAX_QUERY_LENGTH) ?\ + (MAX_URI_LENGTH) : (MAX_QUERY_LENGTH)) // checks if optionID is within vendor specific range OCStackResult isVendorSpecific(uint16_t optionID); diff --git a/resource/csdk/occoap/src/occoaphelper.c b/resource/csdk/occoap/src/occoaphelper.c index f1e9382..966bd79 100644 --- a/resource/csdk/occoap/src/occoaphelper.c +++ b/resource/csdk/occoap/src/occoaphelper.c @@ -374,7 +374,7 @@ OCStackResult FormOptionList(coap_list_t * * optListLoc, uint8_t * addMediaType, coap_list_t * optNode = NULL; int res; size_t buflen; - unsigned char _buf[BUF_SIZE]; + unsigned char _buf[MAX_URI_QUERY_BUF_SIZE]; unsigned char *buf = _buf; if(addMediaType) @@ -412,7 +412,7 @@ OCStackResult FormOptionList(coap_list_t * * optListLoc, uint8_t * addMediaType, if(uri && uriLength) { buf = _buf; - buflen = BUF_SIZE; + buflen = MAX_URI_QUERY_BUF_SIZE; res = coap_split_path(uri, uriLength, buf, &buflen); while (res--) { optNode = CreateNewOptionNode(COAP_OPTION_URI_PATH, @@ -426,7 +426,7 @@ OCStackResult FormOptionList(coap_list_t * * optListLoc, uint8_t * addMediaType, if(query && queryLength) { buf = _buf; - buflen = BUF_SIZE; + buflen = MAX_URI_QUERY_BUF_SIZE; res = coap_split_query(query, queryLength, buf, &buflen); while (res--) { optNode = CreateNewOptionNode(COAP_OPTION_URI_QUERY, -- 2.7.4