mirror of
https://github.com/libretro/RetroArch
synced 2025-04-17 20:43:10 +00:00
Merge pull request #2371 from leiradel/master
url-encode user-provided data
This commit is contained in:
commit
420c8ce737
38
cheevos.c
38
cheevos.c
@ -1139,10 +1139,43 @@ static int cheevos_test_cheevo(cheevo_t *cheevo)
|
|||||||
return ret_val && ret_val_sub_cond;
|
return ret_val && ret_val_sub_cond;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cheevos_url_encode(const char *str, char *encoded, size_t len)
|
||||||
|
{
|
||||||
|
while (*str)
|
||||||
|
{
|
||||||
|
if (isalnum(*str) || *str == '-' || *str == '_' || *str == '.' || *str == '~')
|
||||||
|
{
|
||||||
|
if (len >= 2)
|
||||||
|
{
|
||||||
|
*encoded++ = *str++;
|
||||||
|
len--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (len >= 4)
|
||||||
|
{
|
||||||
|
sprintf(encoded, "%%%02x", (uint8_t)*str);
|
||||||
|
encoded += 3;
|
||||||
|
str++;
|
||||||
|
len -= 3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*encoded = 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int cheevos_login(retro_time_t *timeout)
|
static int cheevos_login(retro_time_t *timeout)
|
||||||
{
|
{
|
||||||
const char *username;
|
const char *username;
|
||||||
const char *password;
|
const char *password;
|
||||||
|
char urle_user[64];
|
||||||
|
char urle_pwd[64];
|
||||||
char request[256];
|
char request[256];
|
||||||
const char *json;
|
const char *json;
|
||||||
int res;
|
int res;
|
||||||
@ -1162,10 +1195,13 @@ static int cheevos_login(retro_time_t *timeout)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cheevos_url_encode(username, urle_user, sizeof(urle_user));
|
||||||
|
cheevos_url_encode(password, urle_pwd, sizeof(urle_pwd));
|
||||||
|
|
||||||
snprintf(
|
snprintf(
|
||||||
request, sizeof(request),
|
request, sizeof(request),
|
||||||
"http://retroachievements.org/dorequest.php?r=login&u=%s&p=%s",
|
"http://retroachievements.org/dorequest.php?r=login&u=%s&p=%s",
|
||||||
username, password
|
urle_user, urle_pwd
|
||||||
);
|
);
|
||||||
|
|
||||||
request[sizeof(request) - 1] = 0;
|
request[sizeof(request) - 1] = 0;
|
||||||
|
@ -218,6 +218,7 @@ static INLINE void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap)
|
|||||||
#else
|
#else
|
||||||
fprintf(LOG_FILE, "%s %s :: ", PROGRAM_NAME, tag ? tag : "[INFO]");
|
fprintf(LOG_FILE, "%s %s :: ", PROGRAM_NAME, tag ? tag : "[INFO]");
|
||||||
vfprintf(LOG_FILE, fmt, ap);
|
vfprintf(LOG_FILE, fmt, ap);
|
||||||
|
fflush(LOG_FILE);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user