Forráskód Böngészése

rtimer: Validate mode parameter

Alex Hermann 10 éve
szülő
commit
3c3fa1ef9b
1 módosított fájl, 10 hozzáadás és 3 törlés
  1. 10 3
      modules/rtimer/rtimer_mod.c

+ 10 - 3
modules/rtimer/rtimer_mod.c

@@ -224,8 +224,12 @@ int stm_t_param(modparam_t type, void *val)
 			tmp.name = pit->body;
 			tmp.name = pit->body;
 		} else if(pit->name.len==4
 		} else if(pit->name.len==4
 				&& strncasecmp(pit->name.s, "mode", 4)==0) {
 				&& strncasecmp(pit->name.s, "mode", 4)==0) {
-			if(tmp.mode==0)
-				str2int(&pit->body, &tmp.mode);
+			if(tmp.mode==0) {
+				if (str2int(&pit->body, &tmp.mode) < 0) {
+					LM_ERR("invalid mode: %.*s\n", pit->body.len, pit->body.s);
+					return -1;
+				}
+			}
 		}  else if(pit->name.len==8
 		}  else if(pit->name.len==8
 				&& strncasecmp(pit->name.s, "interval", 8)==0) {
 				&& strncasecmp(pit->name.s, "interval", 8)==0) {
 			if(pit->body.s[pit->body.len-1]=='u'
 			if(pit->body.s[pit->body.len-1]=='u'
@@ -234,7 +238,10 @@ int stm_t_param(modparam_t type, void *val)
 				tmp.flags |= RTIMER_INTERVAL_USEC;
 				tmp.flags |= RTIMER_INTERVAL_USEC;
 				tmp.mode = 1;
 				tmp.mode = 1;
 			}
 			}
-			str2int(&pit->body, &tmp.interval);
+			if (str2int(&pit->body, &tmp.interval) < 0) {
+				LM_ERR("invalid interval: %.*s\n", pit->body.len, pit->body.s);
+					return -1;
+			}
 		}
 		}
 	}
 	}
 	if(tmp.name.s==NULL)
 	if(tmp.name.s==NULL)