sofia-sip: Fix undefined behavior in parsing
Symptoms with LCR: nta outgoing create: invalid URI Take patch posted to the upstream project and carried by Debian and Ubuntu for this project. Unroll the different fields by hand to fix undefined behavior.
This commit is contained in:
parent
5428bbd10a
commit
87c73f768c
|
@ -0,0 +1,35 @@
|
||||||
|
--- sofia-sip-1.12.11+20110422.1.orig/libsofia-sip-ua/msg/msg_parser.c
|
||||||
|
+++ sofia-sip-1.12.11+20110422.1/libsofia-sip-ua/msg/msg_parser.c
|
||||||
|
@@ -2468,8 +2468,6 @@
|
||||||
|
msg_header_t **
|
||||||
|
msg_hclass_offset(msg_mclass_t const *mc, msg_pub_t const *mo, msg_hclass_t *hc)
|
||||||
|
{
|
||||||
|
- int i;
|
||||||
|
-
|
||||||
|
assert(mc && hc);
|
||||||
|
|
||||||
|
if (mc == NULL || hc == NULL)
|
||||||
|
@@ -2484,9 +2482,20 @@
|
||||||
|
}
|
||||||
|
else
|
||||||
|
/* Header has no name. */
|
||||||
|
- for (i = 0; i <= 6; i++)
|
||||||
|
- if (hc->hc_hash == mc->mc_request[i].hr_class->hc_hash)
|
||||||
|
- return (msg_header_t **)((char *)mo + mc->mc_request[i].hr_offset);
|
||||||
|
+ if (hc->hc_hash == mc->mc_request[0].hr_class->hc_hash)
|
||||||
|
+ return (msg_header_t **)((char *)mo + mc->mc_request[0].hr_offset);
|
||||||
|
+ else if (hc->hc_hash == mc->mc_status[0].hr_class->hc_hash)
|
||||||
|
+ return (msg_header_t **)((char *)mo + mc->mc_status[0].hr_offset);
|
||||||
|
+ else if (hc->hc_hash == mc->mc_separator[0].hr_class->hc_hash)
|
||||||
|
+ return (msg_header_t **)((char *)mo + mc->mc_separator[0].hr_offset);
|
||||||
|
+ else if (hc->hc_hash == mc->mc_payload[0].hr_class->hc_hash)
|
||||||
|
+ return (msg_header_t **)((char *)mo + mc->mc_payload[0].hr_offset);
|
||||||
|
+ else if (hc->hc_hash == mc->mc_unknown[0].hr_class->hc_hash)
|
||||||
|
+ return (msg_header_t **)((char *)mo + mc->mc_unknown[0].hr_offset);
|
||||||
|
+ else if (hc->hc_hash == mc->mc_error[0].hr_class->hc_hash)
|
||||||
|
+ return (msg_header_t **)((char *)mo + mc->mc_error[0].hr_offset);
|
||||||
|
+ else if (hc->hc_hash == mc->mc_multipart[0].hr_class->hc_hash)
|
||||||
|
+ return (msg_header_t **)((char *)mo + mc->mc_multipart[0].hr_offset);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
|
@ -5,7 +5,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=03068f550c635f6520e0f0252da412fc"
|
||||||
SECTION = "libs"
|
SECTION = "libs"
|
||||||
DEPENDS = "glib-2.0 openssl"
|
DEPENDS = "glib-2.0 openssl"
|
||||||
|
|
||||||
SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz"
|
SRC_URI = "\
|
||||||
|
${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz \
|
||||||
|
file://msg_parser.c.diff \
|
||||||
|
"
|
||||||
|
|
||||||
inherit autotools pkgconfig
|
inherit autotools pkgconfig
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue