Fix URI decode issue for feedback module
This commit is contained in:
parent
e623c0dce1
commit
08e771eaa0
|
@ -152,3 +152,26 @@ ax_query_feed(AxQuery query, const char *data, int32_t length)
|
|||
}
|
||||
|
||||
|
||||
void
|
||||
ax_query__decode(char *e_str)
|
||||
{
|
||||
char *p = e_str,
|
||||
hex[3] = {0,0,0};
|
||||
do {
|
||||
switch(*e_str) {
|
||||
case '%':
|
||||
hex[0] = *(++e_str);
|
||||
hex[1] = *(++e_str);
|
||||
*p++ = (char)strtol(hex, NULL, 16);
|
||||
break;
|
||||
|
||||
case '+':
|
||||
*p++ = ' ';
|
||||
break;
|
||||
|
||||
default:
|
||||
*p++ = *e_str;
|
||||
}
|
||||
} while(*e_str++ != 0);
|
||||
}
|
||||
|
||||
|
|
|
@ -51,4 +51,7 @@ AislStatus
|
|||
ax_query_feed(AxQuery query, const char *data, int32_t length);
|
||||
|
||||
|
||||
void
|
||||
ax_query__decode(char *e_str);
|
||||
|
||||
#endif /* !QUERY_H */
|
||||
|
|
|
@ -59,17 +59,25 @@ on_input_var( const char *key, uint32_t k_len,
|
|||
{
|
||||
Context ctx = (Context) p_ctx;
|
||||
AxFeedback mod = (AxFeedback)((AxContext)ctx)->mod;
|
||||
char **out = NULL;
|
||||
|
||||
if (!ctx->email && k_len == mod->name_email_length) {
|
||||
if (strncmp(key, mod->name_email, k_len)==0)
|
||||
return (cstuff_strncpy(&ctx->email, val, v_len) == -1);
|
||||
if (strncmp(key, mod->name_email, k_len) == 0) {
|
||||
out = &ctx->email;
|
||||
}
|
||||
}
|
||||
|
||||
if (!ctx->msg && k_len == mod->name_msg_length) {
|
||||
if (strncmp(key, mod->name_msg, k_len)==0)
|
||||
return (cstuff_strncpy(&ctx->msg, val, v_len) == -1);
|
||||
if (strncmp(key, mod->name_msg, k_len)==0) {
|
||||
out = &ctx->msg;
|
||||
}
|
||||
}
|
||||
|
||||
if (out) {
|
||||
if (cstuff_strncpy(out, val, v_len) == -1)
|
||||
return -1;
|
||||
ax_query__decode(*out);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue