mirror of
https://github.com/owntone/owntone-server.git
synced 2025-02-23 19:42:31 -05:00
Fix URL handling for parameters with either an ampersand (&) or and equal (=). Patches from Stephen Lee fixing a bug reported by Peter Gutbrod.
This commit is contained in:
parent
35d5710d65
commit
7f046ed3b1
3
CREDITS
3
CREDITS
@ -43,3 +43,6 @@ Paul Kim (mrpickles@users.sourceforge.net)
|
|||||||
* Various AAC meta-info cleanups
|
* Various AAC meta-info cleanups
|
||||||
* Compilation tag support (aac and mp3)
|
* Compilation tag support (aac and mp3)
|
||||||
|
|
||||||
|
Stephen Lee (slee@nis.net)
|
||||||
|
* Patches for proper url decoding
|
||||||
|
|
||||||
|
@ -887,9 +887,11 @@ void config_set_status(WS_CONNINFO *pwsc, int session, char *fmt, ...) {
|
|||||||
va_list ap;
|
va_list ap;
|
||||||
SCAN_STATUS *pfirst, *plast;
|
SCAN_STATUS *pfirst, *plast;
|
||||||
|
|
||||||
|
DPRINTF(ERR_DEBUG,"Entering config_set_status\n");
|
||||||
|
|
||||||
if(config_mutex_lock()) {
|
if(config_mutex_lock()) {
|
||||||
/* we should really shutdown the app here... */
|
/* we should really shutdown the app here... */
|
||||||
exit(EXIT_FAILURE);
|
DPRINTF(ERR_FATAL,"Error acquiring config mutex\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
pfirst=plast=scan_status.next;
|
pfirst=plast=scan_status.next;
|
||||||
@ -921,6 +923,7 @@ void config_set_status(WS_CONNINFO *pwsc, int session, char *fmt, ...) {
|
|||||||
} else {
|
} else {
|
||||||
if(!pfirst) {
|
if(!pfirst) {
|
||||||
config_mutex_unlock();
|
config_mutex_unlock();
|
||||||
|
DPRINTF(ERR_DEBUG,"Exiting config_set_status\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -938,6 +941,7 @@ void config_set_status(WS_CONNINFO *pwsc, int session, char *fmt, ...) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
config_mutex_unlock();
|
config_mutex_unlock();
|
||||||
|
DPRINTF(ERR_DEBUG,"Exiting config_set_status\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -616,19 +616,18 @@ int ws_getheaders(WS_CONNINFO *pwsc) {
|
|||||||
int ws_getgetvars(WS_CONNINFO *pwsc, char *string) {
|
int ws_getgetvars(WS_CONNINFO *pwsc, char *string) {
|
||||||
char *new_string;
|
char *new_string;
|
||||||
char *first, *last, *middle;
|
char *first, *last, *middle;
|
||||||
|
char *key, *value;
|
||||||
int done;
|
int done;
|
||||||
|
|
||||||
DPRINTF(ERR_DEBUG,"Thread %d: Original string: %s\n",
|
DPRINTF(ERR_DEBUG,"Thread %d: Original string: %s\n",
|
||||||
pwsc->threadno,string);
|
pwsc->threadno,string);
|
||||||
|
|
||||||
new_string=ws_urldecode(string);
|
|
||||||
|
|
||||||
DPRINTF(ERR_DEBUG,"Thread %d: Processing GET/POSTs from %s\n",
|
DPRINTF(ERR_DEBUG,"Thread %d: Processing GET/POSTs from %s\n",
|
||||||
pwsc->threadno,string);
|
pwsc->threadno,string);
|
||||||
|
|
||||||
done=0;
|
done=0;
|
||||||
|
|
||||||
first=new_string;
|
first=string;
|
||||||
|
|
||||||
while((!done) && (first)) {
|
while((!done) && (first)) {
|
||||||
last=middle=first;
|
last=middle=first;
|
||||||
@ -639,9 +638,15 @@ int ws_getgetvars(WS_CONNINFO *pwsc, char *string) {
|
|||||||
DPRINTF(ERR_WARN,"Thread %d: Bad arg: %s\n",
|
DPRINTF(ERR_WARN,"Thread %d: Bad arg: %s\n",
|
||||||
pwsc->threadno,first);
|
pwsc->threadno,first);
|
||||||
} else {
|
} else {
|
||||||
|
key=ws_urldecode(first);
|
||||||
|
value=ws_urldecode(middle);
|
||||||
|
|
||||||
DPRINTF(ERR_DEBUG,"Thread %d: Adding arg %s = %s\n",
|
DPRINTF(ERR_DEBUG,"Thread %d: Adding arg %s = %s\n",
|
||||||
pwsc->threadno,first,middle);
|
pwsc->threadno,key,value);
|
||||||
ws_addarg(&pwsc->request_vars,first,"%s",middle);
|
ws_addarg(&pwsc->request_vars,key,"%s",value);
|
||||||
|
|
||||||
|
free(key);
|
||||||
|
free(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!last) {
|
if(!last) {
|
||||||
@ -653,7 +658,6 @@ int ws_getgetvars(WS_CONNINFO *pwsc, char *string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
free(new_string);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user