aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authordbailey <dbailey@f38db490-d61c-443f-a65b-d21fe96a405b>2009-04-20 19:10:56 +0000
committerdbailey <dbailey@f38db490-d61c-443f-a65b-d21fe96a405b>2009-04-20 19:10:56 +0000
commitfe4f992c054c2a3adb75730e1c9e6f207d124445 (patch)
treecd02334e3c040bdcd5f1ec131ff8e15bad2cde45 /main
parent78469be4d05fe0c45252a6ef15b9b01f63346524 (diff)
Clean up problem with manager implementation of mmap where it was not testing against MAP_FAILED response.
Got rid of shadowed variable used in processign the mmap results. Change test of mmap results to compare against MAP_FAILED git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@189391 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main')
-rw-r--r--main/db1-ast/recno/rec_open.c2
-rw-r--r--main/manager.c24
2 files changed, 14 insertions, 12 deletions
diff --git a/main/db1-ast/recno/rec_open.c b/main/db1-ast/recno/rec_open.c
index 0ebc8c7c4..0fb08258c 100644
--- a/main/db1-ast/recno/rec_open.c
+++ b/main/db1-ast/recno/rec_open.c
@@ -169,7 +169,7 @@ slow: if ((t->bt_rfp = fdopen(rfd, "r")) == NULL)
t->bt_msize = sb.st_size;
if ((t->bt_smap = mmap(NULL, t->bt_msize,
PROT_READ, MAP_PRIVATE, rfd,
- (off_t)0)) == (caddr_t)-1)
+ (off_t)0)) == MAP_FAILED
goto slow;
t->bt_cmap = t->bt_smap;
t->bt_emap = t->bt_smap + sb.st_size;
diff --git a/main/manager.c b/main/manager.c
index 65b6d8817..d54874547 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -2881,30 +2881,32 @@ static char *generic_http_callback(int format, struct sockaddr_in *requestor, co
char *buf;
size_t l = lseek(ss.fd, 0, SEEK_END);
if (l) {
- if ((buf = mmap(NULL, l, PROT_READ | PROT_WRITE, MAP_SHARED, ss.fd, 0))) {
- char *tmp;
+ if (MAP_FAILED == (buf = mmap(NULL, l, PROT_READ | PROT_WRITE, MAP_PRIVATE, ss.fd, 0))) {
+ ast_log(LOG_WARNING, "mmap failed. Manager request output was not processed\n");
+ } else {
+ char *tmpbuf;
if (format == FORMAT_XML)
- tmp = xml_translate(buf, params);
+ tmpbuf = xml_translate(buf, params);
else if (format == FORMAT_HTML)
- tmp = html_translate(buf);
+ tmpbuf = html_translate(buf);
else
- tmp = buf;
- if (tmp) {
+ tmpbuf = buf;
+ if (tmpbuf) {
size_t wlen, tlen;
- if ((retval = malloc((wlen = strlen(workspace)) + (tlen = strlen(tmp)) + 128))) {
+ if ((retval = malloc((wlen = strlen(workspace)) + (tlen = strlen(tmpbuf)) + 128))) {
strcpy(retval, workspace);
- strcpy(retval + wlen, tmp);
+ strcpy(retval + wlen, tmpbuf);
c = retval + wlen + tlen;
/* Leftover space for footer, if any */
len = 120;
}
}
- if (tmp != buf)
- free(tmp);
+ if (tmpbuf != buf)
+ free(tmpbuf);
free(s->outputstr);
s->outputstr = NULL;
+ munmap(buf, l);
}
- munmap(buf, l);
}
fclose(ss.f);
ss.f = NULL;