summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMichael Vetter <[email protected]>2018-11-13 10:53:49 +0100
committerMichael Vetter <[email protected]>2018-11-13 10:59:52 +0100
commit8f70c3baed04e07e21a82ac39d64cbc4d2952ee9 (patch)
tree45b3e2910abd0ff8b63f8fb8cefc98c54e306da2 /src
parent618f220851570f2bb9ea0bb354a65e92c6d06968 (diff)
downloadraylib-8f70c3baed04e07e21a82ac39d64cbc4d2952ee9.tar.gz
raylib-8f70c3baed04e07e21a82ac39d64cbc4d2952ee9.zip
Check for single apostrophe in OpenURL()
When doing a8dffc63fbe3926498ecb905428f454d0afbe526 I was not aware that printing a warning and not executing the code would be an option. I only learned that through 618f220851570f2bb9ea0bb354a65e92c6d06968. So I propose that we allow all URLs except if the string contains a `'`. Which could end the URL and call another command via `system()`. Related to https://github.com/raysan5/raylib/issues/686
Diffstat (limited to 'src')
-rw-r--r--src/core.c23
1 files changed, 4 insertions, 19 deletions
diff --git a/src/core.c b/src/core.c
index 9620f86f..94571599 100644
--- a/src/core.c
+++ b/src/core.c
@@ -1828,24 +1828,10 @@ void OpenURL(const char *url)
{
// Small security check trying to avoid (partially) malicious code...
// sorry for the inconvenience when you hit this point...
- bool validUrl = true;
- int len = strlen(url);
-
- for (int i = 0; i < len; i++)
- {
- if ((url[i] == ';') ||
- (url[i] == '?') ||
- (url[i] == ':') ||
- (url[i] == '=') ||
- (url[i] == '&'))
- {
- validUrl = false;
- break;
- }
- }
-
- if (validUrl)
+ if (strchr(url, '\'') != NULL)
{
+ TraceLog(LOG_WARNING, "Provided URL does not seem to be valid.");
+ } else {
char *cmd = calloc(strlen(url) + 10, sizeof(char));
#if defined(_WIN32)
@@ -1856,10 +1842,9 @@ void OpenURL(const char *url)
sprintf(cmd, "open '%s'", url);
#endif
system(cmd);
-
+
free(cmd);
}
- else TraceLog(LOG_WARNING, "Provided URL does not seem to be valid.");
}
//----------------------------------------------------------------------------------