safefree -> free

This commit is contained in:
Emil Mikulic 2004-12-27 12:47:39 +00:00
parent dfe896357a
commit 74fcaf5859

View File

@ -23,6 +23,9 @@ static const char rcsid[] =
#ifndef DEBUG #ifndef DEBUG
#define NDEBUG #define NDEBUG
static const int debug = 0;
#else
static const int debug = 0;
#endif #endif
#ifdef __linux #ifdef __linux
@ -51,14 +54,6 @@ static const char rcsid[] =
#include <time.h> #include <time.h>
#include <unistd.h> #include <unistd.h>
#ifdef NDEBUG
#define safefree free
static const int debug = 0;
#else
#define safefree(x) do { free(x); x = NULL; } while(0)
static const int debug = 0;
#endif
#ifndef min #ifndef min
#define min(a,b) ( ((a)<(b)) ? (a) : (b) ) #define min(a,b) ( ((a)<(b)) ? (a) : (b) )
#endif #endif
@ -436,7 +431,7 @@ static void appendf(struct apbuf *buf, const char *format, ...)
va_end(va); va_end(va);
appendl(buf, tmp, len); appendl(buf, tmp, len);
safefree(tmp); free(tmp);
} }
@ -546,13 +541,13 @@ static char *make_safe_uri(char *uri)
/* unsafe string so free elem[]; all its elements are free at /* unsafe string so free elem[]; all its elements are free at
* this point. * this point.
*/ */
safefree(elem); free(elem);
return NULL; return NULL;
} }
else else
{ {
elements--; elements--;
safefree(elem[elements]); free(elem[elements]);
} }
} }
else elem[elements++] = split_string(uri, i, j); else elem[elements++] = split_string(uri, i, j);
@ -572,7 +567,7 @@ static char *make_safe_uri(char *uri)
assert(pos+delta <= urilen); assert(pos+delta <= urilen);
memcpy(out+pos, elem[i], delta); memcpy(out+pos, elem[i], delta);
safefree(elem[i]); free(elem[i]);
pos += delta; pos += delta;
} }
free(elem); free(elem);
@ -607,7 +602,7 @@ static void add_mime_mapping(const char *extension, const char *mimetype)
for (i=0; i<mime_map_size; i++) for (i=0; i<mime_map_size; i++)
if (strcmp(mime_map[i].extension, extension) == 0) if (strcmp(mime_map[i].extension, extension) == 0)
{ {
safefree(mime_map[i].mimetype); free(mime_map[i].mimetype);
mime_map[i].mimetype = xstrdup(mimetype); mime_map[i].mimetype = xstrdup(mimetype);
return; return;
} }
@ -680,8 +675,8 @@ static void parse_mimetype_line(const char *line)
mimetype = split_string(line, pad, bound1); mimetype = split_string(line, pad, bound1);
extension = split_string(line, lbound, rbound); extension = split_string(line, lbound, rbound);
add_mime_mapping(extension, mimetype); add_mime_mapping(extension, mimetype);
safefree(mimetype); free(mimetype);
safefree(extension); free(extension);
if (line[rbound] == '\0') return; /* end of line */ if (line[rbound] == '\0') return; /* end of line */
else lbound = rbound + 1; else lbound = rbound + 1;
@ -784,7 +779,7 @@ static void parse_extension_map_file(const char *filename)
{ {
chomp(buf); chomp(buf);
parse_mimetype_line(buf); parse_mimetype_line(buf);
safefree(buf); free(buf);
} }
fclose(fp); fclose(fp);
@ -1140,14 +1135,14 @@ static void free_connection(struct connection *conn)
if (debug) printf("free_connection(%d)\n", conn->socket); if (debug) printf("free_connection(%d)\n", conn->socket);
log_connection(conn); log_connection(conn);
if (conn->socket != -1) xclose(conn->socket); if (conn->socket != -1) xclose(conn->socket);
if (conn->request != NULL) safefree(conn->request); if (conn->request != NULL) free(conn->request);
if (conn->method != NULL) safefree(conn->method); if (conn->method != NULL) free(conn->method);
if (conn->uri != NULL) safefree(conn->uri); if (conn->uri != NULL) free(conn->uri);
if (conn->referer != NULL) safefree(conn->referer); if (conn->referer != NULL) free(conn->referer);
if (conn->user_agent != NULL) safefree(conn->user_agent); if (conn->user_agent != NULL) free(conn->user_agent);
if (conn->header != NULL && !conn->header_dont_free) if (conn->header != NULL && !conn->header_dont_free)
safefree(conn->header); free(conn->header);
if (conn->reply != NULL && !conn->reply_dont_free) safefree(conn->reply); if (conn->reply != NULL && !conn->reply_dont_free) free(conn->reply);
if (conn->reply_fd != -1) xclose(conn->reply_fd); if (conn->reply_fd != -1) xclose(conn->reply_fd);
} }
@ -1308,7 +1303,7 @@ static void default_reply(struct connection *conn,
"Generated by %s on %s\n" "Generated by %s on %s\n"
"</body></html>\n", "</body></html>\n",
errcode, errname, errname, reason, pkgname, date); errcode, errname, errname, reason, pkgname, date);
safefree(reason); free(reason);
conn->header_length = xasprintf(&(conn->header), conn->header_length = xasprintf(&(conn->header),
"HTTP/1.1 %d %s\r\n" "HTTP/1.1 %d %s\r\n"
@ -1362,7 +1357,7 @@ static void redirect(struct connection *conn, const char *format, ...)
"\r\n", "\r\n",
date, pkgname, where, keep_alive(conn), conn->reply_length); date, pkgname, where, keep_alive(conn), conn->reply_length);
safefree(where); free(where);
conn->reply_type = REPLY_GENERATED; conn->reply_type = REPLY_GENERATED;
conn->http_code = 301; conn->http_code = 301;
} }
@ -1449,7 +1444,7 @@ static void parse_range_field(struct connection *conn)
} }
} }
while(0); /* break handling */ while(0); /* break handling */
safefree(range); free(range);
/* sanity check: begin <= end */ /* sanity check: begin <= end */
if (conn->range_begin_given && conn->range_end_given && if (conn->range_begin_given && conn->range_end_given &&
@ -1509,7 +1504,7 @@ static int parse_request(struct connection *conn)
proto = split_string(conn->request, bound1, bound2); proto = split_string(conn->request, bound1, bound2);
if (strcasecmp(proto, "HTTP/1.1") == 0) conn->conn_close = 0; if (strcasecmp(proto, "HTTP/1.1") == 0) conn->conn_close = 0;
safefree(proto); free(proto);
} }
/* parse connection field */ /* parse connection field */
@ -1518,7 +1513,7 @@ static int parse_request(struct connection *conn)
{ {
if (strcasecmp(tmp, "close") == 0) conn->conn_close = 1; if (strcasecmp(tmp, "close") == 0) conn->conn_close = 1;
else if (strcasecmp(tmp, "keep-alive") == 0) conn->conn_close = 0; else if (strcasecmp(tmp, "keep-alive") == 0) conn->conn_close = 0;
safefree(tmp); free(tmp);
} }
/* parse important fields */ /* parse important fields */
@ -1602,7 +1597,7 @@ static ssize_t make_sorted_dirlist(const char *path, struct dlent ***output)
(void)closedir(dir); /* can't error out if opendir() succeeded */ (void)closedir(dir); /* can't error out if opendir() succeeded */
safefree(currname); free(currname);
qsort(list, entries, sizeof(struct dlent*), dlent_cmp); qsort(list, entries, sizeof(struct dlent*), dlent_cmp);
*output = xrealloc(list, sizeof(struct dlent*) * entries); *output = xrealloc(list, sizeof(struct dlent*) * entries);
return entries; return entries;
@ -1619,8 +1614,8 @@ static void cleanup_sorted_dirlist(struct dlent **list, const ssize_t size)
ssize_t i; ssize_t i;
for (i=0; i<size; i++) for (i=0; i<size; i++)
{ {
safefree(list[i]->name); free(list[i]->name);
safefree(list[i]); free(list[i]);
} }
} }
@ -1679,8 +1674,8 @@ static void generate_dir_listing(struct connection *conn, const char *path)
} }
cleanup_sorted_dirlist(list, listsize); cleanup_sorted_dirlist(list, listsize);
safefree(list); free(list);
safefree(spaces); free(spaces);
(void)rfc1123_date(date, time(NULL)); (void)rfc1123_date(date, time(NULL));
append(listing, append(listing,
@ -1694,7 +1689,7 @@ static void generate_dir_listing(struct connection *conn, const char *path)
conn->reply = listing->str; conn->reply = listing->str;
conn->reply_length = listing->length; conn->reply_length = listing->length;
safefree(listing); /* don't free inside of listing */ free(listing); /* don't free inside of listing */
conn->header_length = xasprintf(&(conn->header), conn->header_length = xasprintf(&(conn->header),
"HTTP/1.1 200 OK\r\n" "HTTP/1.1 200 OK\r\n"
@ -1727,7 +1722,7 @@ static void process_get(struct connection *conn)
/* make sure it's safe */ /* make sure it's safe */
safe_url = make_safe_uri(decoded_url); safe_url = make_safe_uri(decoded_url);
safefree(decoded_url); free(decoded_url);
if (safe_url == NULL) if (safe_url == NULL)
{ {
default_reply(conn, 400, "Bad Request", default_reply(conn, 400, "Bad Request",
@ -1741,11 +1736,11 @@ static void process_get(struct connection *conn)
xasprintf(&target, "%s%s%s", wwwroot, safe_url, index_name); xasprintf(&target, "%s%s%s", wwwroot, safe_url, index_name);
if (!file_exists(target)) if (!file_exists(target))
{ {
safefree(target); free(target);
xasprintf(&target, "%s%s", wwwroot, safe_url); xasprintf(&target, "%s%s", wwwroot, safe_url);
generate_dir_listing(conn, target); generate_dir_listing(conn, target);
safefree(target); free(target);
safefree(safe_url); free(safe_url);
return; return;
} }
mimetype = uri_content_type(index_name); mimetype = uri_content_type(index_name);
@ -1755,13 +1750,13 @@ static void process_get(struct connection *conn)
xasprintf(&target, "%s%s", wwwroot, safe_url); xasprintf(&target, "%s%s", wwwroot, safe_url);
mimetype = uri_content_type(safe_url); mimetype = uri_content_type(safe_url);
} }
safefree(safe_url); free(safe_url);
if (debug) printf("uri=%s, target=%s, content-type=%s\n", if (debug) printf("uri=%s, target=%s, content-type=%s\n",
conn->uri, target, mimetype); conn->uri, target, mimetype);
/* open file */ /* open file */
conn->reply_fd = open(target, O_RDONLY | O_NONBLOCK); conn->reply_fd = open(target, O_RDONLY | O_NONBLOCK);
safefree(target); free(target);
if (conn->reply_fd == -1) if (conn->reply_fd == -1)
{ {
@ -1811,10 +1806,10 @@ static void process_get(struct connection *conn)
if (debug) printf("not modified since %s\n", if_mod_since); if (debug) printf("not modified since %s\n", if_mod_since);
default_reply(conn, 304, "Not Modified", ""); default_reply(conn, 304, "Not Modified", "");
conn->header_only = 1; conn->header_only = 1;
safefree(if_mod_since); free(if_mod_since);
return; return;
} }
safefree(if_mod_since); free(if_mod_since);
if (conn->range_begin_given || conn->range_end_given) if (conn->range_begin_given || conn->range_end_given)
{ {
@ -2194,7 +2189,7 @@ static void httpd_poll(void)
{ {
LIST_REMOVE(conn, entries); LIST_REMOVE(conn, entries);
free_connection(conn); free_connection(conn);
safefree(conn); free(conn);
break; break;
} }
/* else */ /* else */