Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
M
mongoose
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
mongoose
Commits
9d7a60a6
Commit
9d7a60a6
authored
Nov 10, 2014
by
Sergey Lyubka
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #433 from jhnwkmn/malloc
Consistent use of NS_MALLOC, NS_FREE and NS_REALLOC
parents
e9d4847c
ba9c7418
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
32 deletions
+36
-32
mongoose.c
mongoose.c
+36
-32
No files found.
mongoose.c
View file @
9d7a60a6
...
...
@@ -305,6 +305,10 @@ int ns_resolve(const char *domain_name, char *ip_addr_buf, size_t buf_len);
#define NS_FREE free
#endif
#ifndef NS_CALLOC
#define NS_CALLOC calloc
#endif
#define NS_CTL_MSG_MESSAGE_SIZE (8 * 1024)
#define NS_READ_BUFFER_SIZE 2048
#define NS_UDP_RECEIVE_BUFFER_SIZE 2000
...
...
@@ -429,7 +433,7 @@ int ns_avprintf(char **buf, size_t size, const char *fmt, va_list ap) {
// succeed or out of memory.
*
buf
=
NULL
;
while
(
len
<
0
)
{
if
(
*
buf
)
free
(
*
buf
);
if
(
*
buf
)
NS_FREE
(
*
buf
);
size
*=
2
;
if
((
*
buf
=
(
char
*
)
NS_MALLOC
(
size
))
==
NULL
)
break
;
va_copy
(
ap_copy
,
ap
);
...
...
@@ -458,7 +462,7 @@ int ns_vprintf(struct ns_connection *nc, const char *fmt, va_list ap) {
ns_out
(
nc
,
buf
,
len
);
}
if
(
buf
!=
mem
&&
buf
!=
NULL
)
{
free
(
buf
);
NS_FREE
(
buf
);
}
return
len
;
...
...
@@ -492,7 +496,7 @@ static void hexdump(struct ns_connection *nc, const char *path,
ns_hexdump
(
io
->
buf
+
(
ev
==
NS_SEND
?
0
:
io
->
len
)
-
(
ev
==
NS_SEND
?
0
:
num_bytes
),
num_bytes
,
buf
,
buf_size
);
fprintf
(
fp
,
"%s"
,
buf
);
free
(
buf
);
NS_FREE
(
buf
);
}
fclose
(
fp
);
}
...
...
@@ -1907,7 +1911,7 @@ static void *push_to_stdin(void *arg) {
}
DBG
((
"%s"
,
"FORWARED EVERYTHING TO CGI"
));
CloseHandle
(
tp
->
hPipe
);
free
(
tp
);
NS_FREE
(
tp
);
_endthread
();
return
NULL
;
}
...
...
@@ -1928,14 +1932,14 @@ static void *pull_from_stdout(void *arg) {
CloseHandle
(
tp
->
hPipe
);
shutdown
(
tp
->
s
,
2
);
// Without this, IO thread may get truncated data
closesocket
(
tp
->
s
);
free
(
tp
);
NS_FREE
(
tp
);
_endthread
();
return
NULL
;
}
static
void
spawn_stdio_thread
(
sock_t
sock
,
HANDLE
hPipe
,
void
*
(
*
func
)(
void
*
))
{
struct
threadparam
*
tp
=
(
struct
threadparam
*
)
malloc
(
sizeof
(
*
tp
));
struct
threadparam
*
tp
=
(
struct
threadparam
*
)
NS_MALLOC
(
sizeof
(
*
tp
));
if
(
tp
!=
NULL
)
{
tp
->
s
=
sock
;
tp
->
hPipe
=
hPipe
;
...
...
@@ -2294,7 +2298,7 @@ static void on_cgi_data(struct ns_connection *nc) {
#endif // !MONGOOSE_NO_CGI
static
char
*
mg_strdup
(
const
char
*
str
)
{
char
*
copy
=
(
char
*
)
malloc
(
strlen
(
str
)
+
1
);
char
*
copy
=
(
char
*
)
NS_MALLOC
(
strlen
(
str
)
+
1
);
if
(
copy
!=
NULL
)
{
strcpy
(
copy
,
str
);
}
...
...
@@ -2690,7 +2694,7 @@ size_t mg_printf_data(struct mg_connection *c, const char *fmt, ...) {
write_chunk
((
struct
connection
*
)
conn
,
buf
,
len
);
}
if
(
buf
!=
mem
&&
buf
!=
NULL
)
{
free
(
buf
);
NS_FREE
(
buf
);
}
return
conn
->
ns_conn
->
send_iobuf
.
len
;
}
...
...
@@ -2939,7 +2943,7 @@ size_t mg_websocket_write(struct mg_connection *conn, int opcode,
size_t
copy_len
=
0
;
if
(
data_len
+
10
>
sizeof
(
mem
)
&&
(
copy
=
(
unsigned
char
*
)
malloc
(
data_len
+
10
))
==
NULL
)
{
(
copy
=
(
unsigned
char
*
)
NS_MALLOC
(
data_len
+
10
))
==
NULL
)
{
return
0
;
}
...
...
@@ -2971,7 +2975,7 @@ size_t mg_websocket_write(struct mg_connection *conn, int opcode,
mg_write
(
conn
,
copy
,
copy_len
);
}
if
(
copy
!=
mem
)
{
free
(
copy
);
NS_FREE
(
copy
);
}
// If we send closing frame, schedule a connection to be closed after
...
...
@@ -2996,7 +3000,7 @@ size_t mg_websocket_printf(struct mg_connection *conn, int opcode,
va_end
(
ap
);
if
(
buf
!=
mem
&&
buf
!=
NULL
)
{
free
(
buf
);
NS_FREE
(
buf
);
}
return
MG_CONN_2_CONN
(
conn
)
->
ns_conn
->
send_iobuf
.
len
;
...
...
@@ -3309,7 +3313,7 @@ static DIR *opendir(const char *name) {
if
(
name
==
NULL
)
{
SetLastError
(
ERROR_BAD_ARGUMENTS
);
}
else
if
((
dir
=
(
DIR
*
)
malloc
(
sizeof
(
*
dir
)))
==
NULL
)
{
}
else
if
((
dir
=
(
DIR
*
)
NS_MALLOC
(
sizeof
(
*
dir
)))
==
NULL
)
{
SetLastError
(
ERROR_NOT_ENOUGH_MEMORY
);
}
else
{
to_wchar
(
name
,
wpath
,
ARRAY_SIZE
(
wpath
));
...
...
@@ -3320,7 +3324,7 @@ static DIR *opendir(const char *name) {
dir
->
handle
=
FindFirstFileW
(
wpath
,
&
dir
->
info
);
dir
->
result
.
d_name
[
0
]
=
'\0'
;
}
else
{
free
(
dir
);
NS_FREE
(
dir
);
dir
=
NULL
;
}
}
...
...
@@ -3335,7 +3339,7 @@ static int closedir(DIR *dir) {
if
(
dir
->
handle
!=
INVALID_HANDLE_VALUE
)
result
=
FindClose
(
dir
->
handle
)
?
0
:
-
1
;
free
(
dir
);
NS_FREE
(
dir
);
}
else
{
result
=
-
1
;
SetLastError
(
ERROR_BAD_ARGUMENTS
);
...
...
@@ -3393,7 +3397,7 @@ static int scan_directory(struct connection *conn, const char *dir,
// Resize the array if nesessary
if
(
arr_ind
>=
arr_size
)
{
if
((
p
=
(
struct
dir_entry
*
)
realloc
(
*
arr
,
(
inc
+
arr_size
)
*
sizeof
(
**
arr
)))
!=
NULL
)
{
NS_REALLOC
(
*
arr
,
(
inc
+
arr_size
)
*
sizeof
(
**
arr
)))
!=
NULL
)
{
// Memset new chunk to zero, otherwize st_mtime will have garbage which
// can make strftime() segfault, see
// http://code.google.com/p/mongoose/issues/detail?id=79
...
...
@@ -3519,9 +3523,9 @@ static void send_directory_listing(struct connection *conn, const char *dir) {
qsort
(
arr
,
num_entries
,
sizeof
(
arr
[
0
]),
compare_dir_entries
);
for
(
i
=
0
;
i
<
num_entries
;
i
++
)
{
print_dir_entry
(
&
arr
[
i
]);
free
(
arr
[
i
].
file_name
);
NS_FREE
(
arr
[
i
].
file_name
);
}
free
(
arr
);
NS_FREE
(
arr
);
write_terminating_chunk
(
conn
);
close_local_endpoint
(
conn
);
...
...
@@ -3589,9 +3593,9 @@ static void handle_propfind(struct connection *conn, const char *path,
struct
dir_entry
*
de
=
&
arr
[
i
];
mg_url_encode
(
de
->
file_name
,
strlen
(
de
->
file_name
),
buf
,
sizeof
(
buf
));
print_props
(
conn
,
buf
,
&
de
->
st
);
free
(
de
->
file_name
);
NS_FREE
(
de
->
file_name
);
}
free
(
arr
);
NS_FREE
(
arr
);
}
ns_send
(
conn
->
ns_conn
,
footer
,
sizeof
(
footer
)
-
1
);
}
...
...
@@ -4561,7 +4565,7 @@ static void try_parse(struct connection *conn) {
// If request is buffered in, remove it from the iobuf. This is because
// iobuf could be reallocated, and pointers in parsed request could
// become invalid.
conn
->
request
=
(
char
*
)
malloc
(
conn
->
request_len
);
conn
->
request
=
(
char
*
)
NS_MALLOC
(
conn
->
request_len
);
memcpy
(
conn
->
request
,
io
->
buf
,
conn
->
request_len
);
//DBG(("%p [%.*s]", conn, conn->request_len, conn->request));
iobuf_remove
(
io
,
conn
->
request_len
);
...
...
@@ -4655,7 +4659,7 @@ static void call_http_client_handler(struct connection *conn) {
iobuf_remove
(
&
conn
->
ns_conn
->
recv_iobuf
,
conn
->
mg_conn
.
content_len
);
conn
->
mg_conn
.
status_code
=
0
;
conn
->
cl
=
conn
->
num_bytes_recv
=
conn
->
request_len
=
0
;
free
(
conn
->
request
);
NS_FREE
(
conn
->
request
);
conn
->
request
=
NULL
;
}
...
...
@@ -4679,7 +4683,7 @@ struct mg_connection *mg_connect(struct mg_server *server, const char *addr) {
nsconn
=
ns_connect
(
&
server
->
ns_mgr
,
addr
,
mg_ev_handler
,
NULL
);
if
(
nsconn
==
NULL
)
return
0
;
if
((
conn
=
(
struct
connection
*
)
calloc
(
1
,
sizeof
(
*
conn
)))
==
NULL
)
{
if
((
conn
=
(
struct
connection
*
)
NS_CALLOC
(
1
,
sizeof
(
*
conn
)))
==
NULL
)
{
nsconn
->
flags
|=
NSF_CLOSE_IMMEDIATELY
;
return
0
;
}
...
...
@@ -4771,8 +4775,8 @@ static void close_local_endpoint(struct connection *conn) {
// Gobble possible POST data sent to the URI handler
iobuf_free
(
&
conn
->
ns_conn
->
recv_iobuf
);
free
(
conn
->
request
);
free
(
conn
->
path_info
);
NS_FREE
(
conn
->
request
);
NS_FREE
(
conn
->
path_info
);
conn
->
endpoint
.
nc
=
NULL
;
conn
->
request
=
conn
->
path_info
=
NULL
;
...
...
@@ -4830,9 +4834,9 @@ void mg_destroy_server(struct mg_server **server) {
ns_mgr_free
(
&
s
->
ns_mgr
);
for
(
i
=
0
;
i
<
(
int
)
ARRAY_SIZE
(
s
->
config_options
);
i
++
)
{
free
(
s
->
config_options
[
i
]);
// It is OK to free(NULL)
NS_FREE
(
s
->
config_options
[
i
]);
// It is OK to free(NULL)
}
free
(
s
);
NS_FREE
(
s
);
*
server
=
NULL
;
}
}
...
...
@@ -4958,7 +4962,7 @@ void mg_copy_listeners(struct mg_server *s, struct mg_server *to) {
for
(
c
=
ns_next
(
&
s
->
ns_mgr
,
NULL
);
c
!=
NULL
;
c
=
ns_next
(
&
s
->
ns_mgr
,
c
))
{
struct
ns_connection
*
tmp
;
if
((
c
->
flags
&
NSF_LISTENING
)
&&
(
tmp
=
(
struct
ns_connection
*
)
malloc
(
sizeof
(
*
tmp
)))
!=
NULL
)
{
(
tmp
=
(
struct
ns_connection
*
)
NS_MALLOC
(
sizeof
(
*
tmp
)))
!=
NULL
)
{
memcpy
(
tmp
,
c
,
sizeof
(
*
tmp
));
tmp
->
mgr
=
&
to
->
ns_mgr
;
ns_add_conn
(
tmp
->
mgr
,
tmp
);
...
...
@@ -5005,7 +5009,7 @@ const char *mg_set_option(struct mg_server *server, const char *name,
}
if
(
*
v
!=
NULL
)
{
free
(
*
v
);
NS_FREE
(
*
v
);
*
v
=
NULL
;
}
...
...
@@ -5025,7 +5029,7 @@ const char *mg_set_option(struct mg_server *server, const char *name,
}
else
{
char
buf
[
100
];
ns_sock_to_str
(
c
->
sock
,
buf
,
sizeof
(
buf
),
2
);
free
(
*
v
);
NS_FREE
(
*
v
);
*
v
=
mg_strdup
(
buf
);
}
}
...
...
@@ -5067,7 +5071,7 @@ static void on_accept(struct ns_connection *nc, union socket_address *sa) {
if
(
!
check_acl
(
server
->
config_options
[
ACCESS_CONTROL_LIST
],
ntohl
(
*
(
uint32_t
*
)
&
sa
->
sin
.
sin_addr
))
||
(
conn
=
(
struct
connection
*
)
calloc
(
1
,
sizeof
(
*
conn
)))
==
NULL
)
{
(
conn
=
(
struct
connection
*
)
NS_CALLOC
(
1
,
sizeof
(
*
conn
)))
==
NULL
)
{
nc
->
flags
|=
NSF_CLOSE_IMMEDIATELY
;
}
else
{
// Circularly link two connection structures
...
...
@@ -5179,7 +5183,7 @@ static void mg_ev_handler(struct ns_connection *nc, int ev, void *p) {
call_user
(
conn
,
MG_CLOSE
);
close_local_endpoint
(
conn
);
conn
->
ns_conn
=
NULL
;
free
(
conn
);
NS_FREE
(
conn
);
}
break
;
...
...
@@ -5259,7 +5263,7 @@ const char *mg_get_option(const struct mg_server *server, const char *name) {
}
struct
mg_server
*
mg_create_server
(
void
*
server_data
,
mg_handler_t
handler
)
{
struct
mg_server
*
server
=
(
struct
mg_server
*
)
calloc
(
1
,
sizeof
(
*
server
));
struct
mg_server
*
server
=
(
struct
mg_server
*
)
NS_CALLOC
(
1
,
sizeof
(
*
server
));
ns_mgr_init
(
&
server
->
ns_mgr
,
server_data
);
set_default_option_values
(
server
->
config_options
);
server
->
event_handler
=
handler
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment