From 60260f1c60f3f719dc2069809dc7160fd594f889 Mon Sep 17 00:00:00 2001 From: Tim Angus Date: Fri, 21 Sep 2007 12:33:50 +0000 Subject: [PATCH] * (bug 3318) Restrict color escape characters to alphanumerics --- code/game/bg_lib.h | 16 ++++++++++++++++ code/qcommon/q_shared.h | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/code/game/bg_lib.h b/code/game/bg_lib.h index 9d2b6232..13549517 100644 --- a/code/game/bg_lib.h +++ b/code/game/bg_lib.h @@ -60,6 +60,22 @@ typedef char * va_list; #define LONG_MAX 2147483647L /* maximum (signed) long value */ #define ULONG_MAX 0xffffffffUL /* maximum unsigned long value */ +#define isalnum(c) (isalpha(c) || isdigit(c)) +#define isalpha(c) (isupper(c) || islower(c)) +#define isascii(c) ((c) > 0 && (c) <= 0x7f) +#define iscntrl(c) (((c) >= 0) && (((c) <= 0x1f) || ((c) == 0x7f))) +#define isdigit(c) ((c) >= '0' && (c) <= '9') +#define isgraph(c) ((c) != ' ' && isprint(c) +#define islower(c) ((c) >= 'a' && (c) <= 'z') +#define isprint(c) ((c) >= ' ' && (c) <= '~') +#define ispunct(c) (((c) > ' ' && (c) <= '~') && !isalnum(c)) +#define isspace(c) ((c) == ' ' || (c) == '\f' || (c) == '\n' || (c) == '\r' || \ + (c) == '\t' || (c) == '\v') +#define isupper(c) ((c) >= 'A' && (c) <= 'Z') +#define isxdigit(c) (isxupper(c) || isxlower(c)) +#define isxlower(c) (isdigit(c) || (c >= 'a' && c <= 'f')) +#define isxupper(c) (isdigit(c) || (c >= 'A' && c <= 'F')) + // Misc functions typedef int cmp_t(const void *, const void *); void qsort(void *a, size_t n, size_t es, cmp_t *cmp); diff --git a/code/qcommon/q_shared.h b/code/qcommon/q_shared.h index 458c53c6..559f99f4 100644 --- a/code/qcommon/q_shared.h +++ b/code/qcommon/q_shared.h @@ -330,7 +330,7 @@ extern vec4_t colorMdGrey; extern vec4_t colorDkGrey; #define Q_COLOR_ESCAPE '^' -#define Q_IsColorString(p) ( p && *(p) == Q_COLOR_ESCAPE && *((p)+1) && *((p)+1) != Q_COLOR_ESCAPE ) +#define Q_IsColorString(p) ( p && *(p) == Q_COLOR_ESCAPE && *((p)+1) && isalnum(*((p)+1)) ) // ^[0-9a-zA-Z] #define COLOR_BLACK '0' #define COLOR_RED '1'