summaryrefslogtreecommitdiff
path: root/bdAddrLoader
diff options
context:
space:
mode:
authorNick Kralevich <nnk@google.com>2013-05-23 10:11:04 -0700
committerNick Kralevich <nnk@google.com>2013-05-23 14:43:19 -0700
commitba4c725f3c580cbb7134b5ca530057540484183e (patch)
tree84144e4eb9d946027ab2388d54288073501509c6 /bdAddrLoader
parent874f2af5981737e29d4f3dbfcc0068d7d0714918 (diff)
downloadmako-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.c7
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;
}