mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-03-13 12:40:17 +00:00
add some error checking
This commit is contained in:
parent
b3e911b447
commit
8f4e63928a
@ -1157,11 +1157,17 @@ SWITCH_DECLARE(switch_xml_t) switch_xml_parse_fd(int fd)
|
|||||||
return NULL;
|
return NULL;
|
||||||
fstat(fd, &st);
|
fstat(fd, &st);
|
||||||
|
|
||||||
|
if (!st.st_size) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_MMAP
|
#ifdef HAVE_MMAP
|
||||||
l = (st.st_size + sysconf(_SC_PAGESIZE) - 1) & ~(sysconf(_SC_PAGESIZE) - 1);
|
l = (st.st_size + sysconf(_SC_PAGESIZE) - 1) & ~(sysconf(_SC_PAGESIZE) - 1);
|
||||||
if ((m = mmap(NULL, l, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0)) != MAP_FAILED) {
|
if ((m = mmap(NULL, l, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0)) != MAP_FAILED) {
|
||||||
madvise(m, l, MADV_SEQUENTIAL); /* optimize for sequential access */
|
madvise(m, l, MADV_SEQUENTIAL); /* optimize for sequential access */
|
||||||
root = (switch_xml_root_t) switch_xml_parse_str(m, st.st_size);
|
if (!(root = (switch_xml_root_t) switch_xml_parse_str(m, st.st_size))) {
|
||||||
|
munmap(m, l);
|
||||||
|
}
|
||||||
madvise(m, root->len = l, MADV_NORMAL); /* put it back to normal */
|
madvise(m, root->len = l, MADV_NORMAL); /* put it back to normal */
|
||||||
} else { /* mmap failed, read file into memory */
|
} else { /* mmap failed, read file into memory */
|
||||||
#endif /* HAVE_MMAP */
|
#endif /* HAVE_MMAP */
|
||||||
@ -1169,7 +1175,10 @@ SWITCH_DECLARE(switch_xml_t) switch_xml_parse_fd(int fd)
|
|||||||
if (!m)
|
if (!m)
|
||||||
return NULL;
|
return NULL;
|
||||||
l = read(fd, m, st.st_size);
|
l = read(fd, m, st.st_size);
|
||||||
root = (switch_xml_root_t) switch_xml_parse_str((char *) m, l);
|
if (!l || !(root = (switch_xml_root_t) switch_xml_parse_str((char *) m, l))) {
|
||||||
|
free(m);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
root->dynamic = 1; /* so we know to free s in switch_xml_free() */
|
root->dynamic = 1; /* so we know to free s in switch_xml_free() */
|
||||||
#ifdef HAVE_MMAP
|
#ifdef HAVE_MMAP
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user