{"schema":"libjg2-1",
"vpath":"/git/",
"avatar":"/git/avatar/",
"alang":"",
"gen_ut":1752655931,
"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":"ab041b47a598d415a80bd967df7f0412",
"commit": {"type":"commit",
"time": 1570880474,
"time_ofs": 60,
"oid_tree": { "oid": "6433a805cefb5c847eaf18843e17f7c873647e97", "alias": []},
"oid":{ "oid": "70d2ca94b5c6b0b310b9d854da5f83302b703784", "alias": []},
"msg": "cgi: fix passing cgi envs using setenv()",
"sig_commit": { "git_time": { "time": 1570880474, "offset": 60 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },
"sig_author": { "git_time": { "time": 1570438678, "offset": 480 }, "name": "Zhiwen Zheng", "email": "zhiwen.zh@gmail.com", "md5": "2e9d87835eba409045f98e1c9ee16438" }},
"body": "cgi: fix passing cgi envs using setenv()\n"
,
"diff": "diff --git a/lib/roles/cgi/cgi-server.c b/lib/roles/cgi/cgi-server.c\nindex 3c1095d..3513bbc 100644\n--- a/lib/roles/cgi/cgi-server.c\n+++ b/lib/roles/cgi/cgi-server.c\n@@ -224,8 +224,12 @@ lws_cgi(struct lws *wsi, const char * const *exec_array,\n \n \tn \u003d 0;\n \n-\tif (lws_is_ssl(wsi))\n-\t\tenv_array[n++] \u003d \u0022HTTPS\u003dON\u0022;\n+\tif (lws_is_ssl(wsi)) {\n+\t\tenv_array[n++] \u003d p;\n+\t\tp +\u003d lws_snprintf(p, end - p, \u0022HTTPS\u003dON\u0022);\n+\t\tp++;\n+\t}\n+\n \tif (wsi-\u003ehttp.ah) {\n \t\tstatic const unsigned char meths[] \u003d {\n \t\t\tWSI_TOKEN_GET_URI,\n@@ -401,10 +405,13 @@ lws_cgi(struct lws *wsi, const char * const *exec_array,\n \t}\n \n \n-\tenv_array[n++] \u003d \u0022PATH\u003d/bin:/usr/bin:/usr/local/bin:/var/www/cgi-bin\u0022;\n+\tenv_array[n++] \u003d p;\n+\tp +\u003d lws_snprintf(p, end - p, \u0022PATH\u003d/bin:/usr/bin:/usr/local/bin:/var/www/cgi-bin\u0022);\n+\tp++;\n \n \tenv_array[n++] \u003d p;\n-\tp +\u003d lws_snprintf(p, end - p, \u0022SCRIPT_PATH\u003d%s\u0022, exec_array[0]) + 1;\n+\tp +\u003d lws_snprintf(p, end - p, \u0022SCRIPT_PATH\u003d%s\u0022, exec_array[0]);\n+\tp++;\n \n \twhile (mp_cgienv) {\n \t\tenv_array[n++] \u003d p;\n@@ -420,7 +427,10 @@ lws_cgi(struct lws *wsi, const char * const *exec_array,\n \t\tmp_cgienv \u003d mp_cgienv-\u003enext;\n \t}\n \n-\tenv_array[n++] \u003d \u0022SERVER_SOFTWARE\u003dlibwebsockets\u0022;\n+\tenv_array[n++] \u003d p;\n+\tp +\u003d lws_snprintf(p, end - p, \u0022SERVER_SOFTWARE\u003dlibwebsockets\u0022);\n+\tp++;\n+\n \tenv_array[n] \u003d NULL;\n \n #if 0\n@@ -489,13 +499,13 @@ lws_cgi(struct lws *wsi, const char * const *exec_array,\n \t * process is OK. Stuff that happens after the execvpe() is OK.\n \t */\n \n-\tfor (n \u003d 0; n \u003c 3; n++) {\n-\t\tif (dup2(cgi-\u003epipe_fds[n][!(n \u003d\u003d 0)], n) \u003c 0) {\n+\tfor (m \u003d 0; m \u003c 3; m++) {\n+\t\tif (dup2(cgi-\u003epipe_fds[m][!(m \u003d\u003d 0)], m) \u003c 0) {\n \t\t\tlwsl_err(\u0022%s: stdin dup2 failed\u005cn\u0022, __func__);\n \t\t\tgoto bail3;\n \t\t}\n-\t\tclose(cgi-\u003epipe_fds[n][0]);\n-\t\tclose(cgi-\u003epipe_fds[n][1]);\n+\t\tclose(cgi-\u003epipe_fds[m][0]);\n+\t\tclose(cgi-\u003epipe_fds[m][1]);\n \t}\n \n #if !defined(LWS_HAVE_VFORK) || !defined(LWS_HAVE_EXECVPE)\n","s":{"c":1752655931,"u": 4786}}
],"g": 5781,"chitpc": 0,"ehitpc": 0,"indexed":0
,
"ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "0000"}