]> granicus.if.org Git - rtmpdump/commitdiff
fixed undefined behaviour due to union assignment
authorKirill Zorin <cyril.zorin@gmail.com>
Fri, 30 Sep 2011 17:38:23 +0000 (13:38 -0400)
committerHoward Chu <hyc@highlandsun.com>
Fri, 30 Sep 2011 18:49:27 +0000 (11:49 -0700)
librtmp/amf.c
librtmp/rtmp.c

index 7fa289e32d91659bbb4f43d9a11dc61bfff1119d..ae920e440e7aa5af77997fd8be55a25f5bbef79f 100644 (file)
@@ -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
index 5311a8a866c0e6f67be550b2c5cd1bb1e0153428..4b17a492614dffa635cf6a23cfacd636649744a4 100644 (file)
@@ -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;
        }