Jelajahi Sumber

modules_k/siputils: Fix memory leak in uri_param() function

Richard Fuchs 13 tahun lalu
induk
melakukan
5154c90b60
1 mengubah file dengan 7 tambahan dan 9 penghapusan
  1. 7 9
      modules_k/siputils/checks.c

+ 7 - 9
modules_k/siputils/checks.c

@@ -168,7 +168,7 @@ int uri_param_2(struct sip_msg* _msg, char* _param, char* _value)
 	str *param, *value, t;
 	str *param, *value, t;
 
 
 	param_hooks_t hooks;
 	param_hooks_t hooks;
-	param_t* params;
+	param_t* params, *pit;
 
 
 	param = (str*)_param;
 	param = (str*)_param;
 	value = (str*)_value;
 	value = (str*)_value;
@@ -185,25 +185,23 @@ int uri_param_2(struct sip_msg* _msg, char* _param, char* _value)
 	        return -1;
 	        return -1;
 	}
 	}
 
 
-	while (params) {
-		if ((params->name.len == param->len) &&
-		    (strncmp(params->name.s, param->s, param->len) == 0)) {
+	for (pit = params; pit; pit = pit->next) {
+		if ((pit->name.len == param->len) &&
+		    (strncmp(pit->name.s, param->s, param->len) == 0)) {
 			if (value) {
 			if (value) {
-				if ((value->len == params->body.len) &&
-				    strncmp(value->s, params->body.s, value->len) == 0) {
+				if ((value->len == pit->body.len) &&
+				    strncmp(value->s, pit->body.s, value->len) == 0) {
 					goto ok;
 					goto ok;
 				} else {
 				} else {
 					goto nok;
 					goto nok;
 				}
 				}
 			} else {
 			} else {
-				if (params->body.len > 0) {
+				if (pit->body.len > 0) {
 					goto nok;
 					goto nok;
 				} else {
 				} else {
 					goto ok;
 					goto ok;
 				}
 				}
 			}
 			}
-		} else {
-			params = params->next;
 		}
 		}
 	}
 	}