diff options
author | Nick Kralevich <nnk@google.com> | 2013-05-23 10:11:04 -0700 |
---|---|---|
committer | Nick Kralevich <nnk@google.com> | 2013-05-23 14:43:19 -0700 |
commit | ba4c725f3c580cbb7134b5ca530057540484183e (patch) | |
tree | 84144e4eb9d946027ab2388d54288073501509c6 /bdAddrLoader | |
parent | 874f2af5981737e29d4f3dbfcc0068d7d0714918 (diff) | |
download | mako-ba4c725f3c580cbb7134b5ca530057540484183e.tar.gz |
Don't call property_get with too small buffer
It's an error to call property_get with too small of a buffer.
Pass a large enough buffer, and do checks to make sure the returned
value isn't too big.
In function 'property_get',
inlined from 'readBDAddr' at device/lge/mako/bdAddrLoader/addrloader.c:156:32:
system/core/include/cutils/properties.h:64:39: error: call to '__property_get_too_small_error' declared with attribute error: property_get() called with too small of a buffer
In function 'property_get',
inlined from 'readBDAddr' at device/lge/mako/bdAddrLoader/addrloader.c:162:32:
system/core/include/cutils/properties.h:64:39: error: call to '__property_get_too_small_error' declared with attribute error: property_get() called with too small of a buffer
Change-Id: Iddca5625b1ad1e224f8aea87d58e0d63dad54ed5
Diffstat (limited to 'bdAddrLoader')
-rw-r--r-- | bdAddrLoader/addrloader.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/bdAddrLoader/addrloader.c b/bdAddrLoader/addrloader.c index 5c273f9..98f12a7 100644 --- a/bdAddrLoader/addrloader.c +++ b/bdAddrLoader/addrloader.c @@ -151,15 +151,18 @@ int readBDAddr(InArg inArg, LoadedBDAddr *loadedBDAddr) return FAIL; } }else if(inArg.nPathType == ARG_TYPE_PATH_PROP){ + char prop_value[PROPERTY_VALUE_MAX]; switch(inArg.nDataType){ case ARG_TYPE_DATA_HEX: - if(property_get(inArg.szSrc, (char *)loadedBDAddr->data.bin, "")>=0){ + if(property_get(inArg.szSrc, prop_value, "") >= 0 && strlen(prop_value) < BD_ADDR_LEN){ + strlcpy((char *)loadedBDAddr->data.bin, prop_value, BD_ADDR_LEN); loadedBDAddr->nDataType = ARG_TYPE_DATA_HEX; return SUCCESS; } break; case ARG_TYPE_DATA_ASCII: - if(property_get(inArg.szSrc, loadedBDAddr->data.sz, "")>=0){ + if(property_get(inArg.szSrc, prop_value, "") >= 0 && strlen(prop_value) < BD_ADDR_STR_LEN){ + strlcpy(loadedBDAddr->data.sz, prop_value, BD_ADDR_STR_LEN); loadedBDAddr->nDataType = ARG_TYPE_DATA_ASCII; return SUCCESS; } |