Browse Source

ctl: fix crash when listing in struc format
- example: kamcmd core.sockets_list

Ovidiu Sas 11 năm trước cách đây
mục cha
commit
a95cae3fb6
1 tập tin đã thay đổi với 5 bổ sung3 xóa
  1. 5 3
      modules/ctl/binrpc_run.c

+ 5 - 3
modules/ctl/binrpc_run.c

@@ -1055,11 +1055,12 @@ static int rpc_struct_add(struct rpc_struct_l* s, char* fmt, ...)
 	struct binrpc_val avp;
 	struct rpc_struct_l* rs;
 	
-	memset(&avp, 0, sizeof(struct binrpc_val));
 	va_start(ap, fmt);
 	for (;*fmt; fmt++){
+		memset(&avp, 0, sizeof(struct binrpc_val));
 		avp.name.s=va_arg(ap, char*);
-		avp.name.len=strlen(avp.name.s);
+		if (avp.name.s)
+			avp.name.len=strlen(avp.name.s);
 		switch(*fmt){
 			case 'd':
 			case 't':
@@ -1070,7 +1071,8 @@ static int rpc_struct_add(struct rpc_struct_l* s, char* fmt, ...)
 			case 's': /* asciiz */
 				avp.type=BINRPC_T_STR;
 				avp.u.strval.s=va_arg(ap, char*);
-				avp.u.strval.len=strlen(avp.u.strval.s);
+				if (avp.u.strval.s)
+					avp.u.strval.len=strlen(avp.u.strval.s);
 				break;
 			case 'S': /* str */
 				avp.type=BINRPC_T_STR;