Module Name:    src
Committed By:   christos
Date:           Sat Jul  4 22:39:23 UTC 2015

Modified Files:
        src/libexec/httpd: lua-bozo.c

Log Message:
fix memory leaks on error; found by brainy.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/libexec/httpd/lua-bozo.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/libexec/httpd/lua-bozo.c
diff -u src/libexec/httpd/lua-bozo.c:1.11 src/libexec/httpd/lua-bozo.c:1.12
--- src/libexec/httpd/lua-bozo.c:1.11	Fri Aug 15 15:35:28 2014
+++ src/libexec/httpd/lua-bozo.c	Sat Jul  4 18:39:23 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: lua-bozo.c,v 1.11 2014/08/15 19:35:28 mbalmer Exp $	*/
+/*	$NetBSD: lua-bozo.c,v 1.12 2015/07/04 22:39:23 christos Exp $	*/
 
 /*
  * Copyright (c) 2013 Marc Balmer <m...@msys.ch>
@@ -311,41 +311,38 @@ bozo_process_lua(bozo_httpreq_t *request
 	if (!httpd->process_lua)
 		return 0;
 
+	info = NULL;
+	query = NULL;
+	prefix = NULL;
 	uri = request->hr_oldfile ? request->hr_oldfile : request->hr_file;
 
 	if (*uri == '/') {
 		file = bozostrdup(httpd, uri);
+		if (file == NULL)
+			goto out;
 		prefix = bozostrdup(httpd, &uri[1]);
 	} else {
+		if (asprintf(&file, "/%s", uri) < 0)
+			goto out;
 		prefix = bozostrdup(httpd, uri);
-		asprintf(&file, "/%s", uri);
-	}
-	if (file == NULL) {
-		free(prefix);
-		return 0;
 	}
+	if (prefix == NULL)
+		goto out;
 
-	if (request->hr_query && strlen(request->hr_query))
+	if (request->hr_query && request->hr_query[0])
 		query = bozostrdup(httpd, request->hr_query);
-	else
-		query = NULL;
 
 	p = strchr(prefix, '/');
-	if (p == NULL){
-		free(prefix);
-		return 0;
-	}
+	if (p == NULL)
+		goto out;
 	*p++ = '\0';
 	handler = p;
-	if (!*handler) {
-		free(prefix);
-		return 0;
-	}
+	if (!*handler)
+		goto out;
 	p = strchr(handler, '/');
 	if (p != NULL)
 		*p++ = '\0';
 
-	info = NULL;
 	command = file + 1;
 	if ((s = strchr(command, '/')) != NULL) {
 		info = bozostrdup(httpd, s);

Reply via email to