{"schema":"libjg2-1",
"vpath":"/git/",
"avatar":"/git/avatar/",
"alang":"",
"gen_ut":1753169909,
"reponame":"libwebsockets",
"desc":"libwebsockets lightweight C networking library",
"owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://libwebsockets.org/repo/libwebsockets",
"f":3,
"items": [
{"schema":"libjg2-1",
"cid":"1a0146601969d41bf3b8ddecef5e714e",
"commit": {"type":"commit",
"time": 1600236424,
"time_ofs": 60,
"oid_tree": { "oid": "4b16c8ec9a14bad0c57243c25e0ab3ded2fc6145", "alias": []},
"oid":{ "oid": "2badaef4fc15e6c05e6bd70498d2610e2672af3e", "alias": []},
"msg": "unix plat: avoid strict aliasing complaint from a toolchain",
"sig_commit": { "git_time": { "time": 1600236424, "offset": 60 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },
"sig_author": { "git_time": { "time": 1600094454, "offset": 180 }, "name": "Orgad Shaneh", "email": "orgad.shaneh@audiocodes.com", "md5": "80e2bb4e77e8d796898c545820b32f7b" }},
"body": "unix plat: avoid strict aliasing complaint from a toolchain\n\nThe type of the fields in rtentry is sockaddr, and it is\ncasted to sockaddr_in. Size-wise it is ok, they should both\nbe the same size. But casting a pointer breaks build with\noptimizations with the following error:\n\nunix-sockets.c:434: error: dereferencing pointer 'addr' does break strict-aliasing rules\n\nAmends commit 3c95483518e8e1e203f9f75e25bd65b298445cfa."
,
"diff": "diff --git a/lib/plat/unix/unix-sockets.c b/lib/plat/unix/unix-sockets.c\nindex 1fce498..05a6d2a 100644\n--- a/lib/plat/unix/unix-sockets.c\n+++ b/lib/plat/unix/unix-sockets.c\n@@ -409,7 +409,6 @@ lws_plat_ifconfig_ip(const char *ifname, int fd, uint8_t *ip, uint8_t *mask_ip,\n \t\t\tuint8_t *gateway_ip)\n {\n #if defined(__linux__)\n-\tstruct sockaddr_in *addr;\n \tstruct sockaddr_in sin;\n \tstruct rtentry route;\n \tstruct ifreq ifr;\n@@ -440,17 +439,12 @@ lws_plat_ifconfig_ip(const char *ifname, int fd, uint8_t *ip, uint8_t *mask_ip,\n \n \tlws_plat_if_up(ifname, fd, 1);\n \n-\taddr \u003d (struct sockaddr_in *)\u0026route.rt_gateway;\n-\taddr-\u003esin_family \u003d AF_INET;\n-\taddr-\u003esin_addr.s_addr \u003d htonl(*(uint32_t *)gateway_ip);\n+\tsin.sin_addr.s_addr \u003d htonl(*(uint32_t *)gateway_ip);\n+\tmemcpy(\u0026route.rt_gateway, \u0026sin, sizeof(struct sockaddr));\n \n-\taddr \u003d (struct sockaddr_in *)\u0026route.rt_dst;\n-\taddr-\u003esin_family \u003d AF_INET;\n-\taddr-\u003esin_addr.s_addr \u003d 0;\n-\n-\taddr \u003d (struct sockaddr_in *)\u0026route.rt_genmask;\n-\taddr-\u003esin_family \u003d AF_INET;\n-\taddr-\u003esin_addr.s_addr \u003d 0;\n+\tsin.sin_addr.s_addr \u003d 0;\n+\tmemcpy(\u0026route.rt_dst, \u0026sin, sizeof(struct sockaddr));\n+\tmemcpy(\u0026route.rt_genmask, \u0026sin, sizeof(struct sockaddr));\n \n \troute.rt_flags \u003d RTF_UP | RTF_GATEWAY;\n \troute.rt_metric \u003d 100;\n","s":{"c":1753169909,"u": 1914}}
],"g": 3179,"chitpc": 0,"ehitpc": 0,"indexed":0
,
"ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "0000"}