From: Kirill Zorin Date: Fri, 30 Sep 2011 17:38:23 +0000 (-0400) Subject: fixed undefined behaviour due to union assignment X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=60218d0af0f4bd683ecdebe49986f188820cf8ce;p=rtmpdump fixed undefined behaviour due to union assignment --- diff --git a/librtmp/amf.c b/librtmp/amf.c index 7fa289e..ae920e4 100644 --- a/librtmp/amf.c +++ b/librtmp/amf.c @@ -1111,7 +1111,7 @@ AMF_AddProp(AMFObject *obj, const AMFObjectProperty *prop) if (!(obj->o_num & 0x0f)) obj->o_props = realloc(obj->o_props, (obj->o_num + 16) * sizeof(AMFObjectProperty)); - obj->o_props[obj->o_num++] = *prop; + memcpy(&obj->o_props[obj->o_num++], prop, sizeof(AMFObjectProperty)); } int diff --git a/librtmp/rtmp.c b/librtmp/rtmp.c index 5311a8a..4b17a49 100644 --- a/librtmp/rtmp.c +++ b/librtmp/rtmp.c @@ -2584,7 +2584,7 @@ RTMP_FindFirstMatchingProperty(AMFObject *obj, const AVal *name, if (AVMATCH(&prop->p_name, name)) { - *p = *prop; + memcpy(p, prop, sizeof(*prop)); return TRUE; } @@ -2610,7 +2610,7 @@ RTMP_FindPrefixProperty(AMFObject *obj, const AVal *name, if (prop->p_name.av_len > name->av_len && !memcmp(prop->p_name.av_val, name->av_val, name->av_len)) { - *p = *prop; + memcpy(p, prop, sizeof(*prop)); return TRUE; }