mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-23 23:46:16 +02:00
backfire: package/swconfig: add sanity checks to prevent a segfault (backport of r24932)
git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@24992 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
663164bc40
commit
a2940c09a9
@ -8,7 +8,7 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=swconfig
|
PKG_NAME:=swconfig
|
||||||
PKG_RELEASE:=6
|
PKG_RELEASE:=7
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
include $(INCLUDE_DIR)/kernel.mk
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
@ -368,11 +368,26 @@ int swlib_set_attr_string(struct switch_dev *dev, struct switch_attr *a, int por
|
|||||||
ptr = (char *)str;
|
ptr = (char *)str;
|
||||||
while(ptr && *ptr)
|
while(ptr && *ptr)
|
||||||
{
|
{
|
||||||
|
while(*ptr && isspace(*ptr))
|
||||||
|
ptr++;
|
||||||
|
|
||||||
|
if (!*ptr)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (!isdigit(*ptr))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (val.len >= dev->ports)
|
||||||
|
return -1;
|
||||||
|
|
||||||
ports[val.len].flags = 0;
|
ports[val.len].flags = 0;
|
||||||
ports[val.len].id = strtoul(ptr, &ptr, 10);
|
ports[val.len].id = strtoul(ptr, &ptr, 10);
|
||||||
while(*ptr && !isspace(*ptr)) {
|
while(*ptr && !isspace(*ptr)) {
|
||||||
if (*ptr == 't')
|
if (*ptr == 't')
|
||||||
ports[val.len].flags |= SWLIB_PORT_FLAG_TAGGED;
|
ports[val.len].flags |= SWLIB_PORT_FLAG_TAGGED;
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
|
||||||
ptr++;
|
ptr++;
|
||||||
}
|
}
|
||||||
if (*ptr)
|
if (*ptr)
|
||||||
|
Loading…
Reference in New Issue
Block a user