Project homepage Mailing List  Warmcat.com  API Docs  Github Mirror 
{"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"}