Mercurial > hg-old > index.cgi
diff lwlink/lwlink.c @ 395:54499b799779
Q&D sanitization of symbols in map files and error messages in lwlink
author | lost@l-w.ca |
---|---|
date | Fri, 23 Jul 2010 16:40:51 -0600 |
parents | 1c31e9005ff7 |
children |
line wrap: on
line diff
--- a/lwlink/lwlink.c Fri Jul 23 16:23:54 2010 -0600 +++ b/lwlink/lwlink.c Fri Jul 23 16:40:51 2010 -0600 @@ -105,3 +105,40 @@ scriptls = lw_realloc(scriptls, sizeof(char *) * (nscriptls + 1)); scriptls[nscriptls++] = t; } + +char *sanitize_symbol(char *symbol) +{ + static char symbuf[2048]; + char *sym = symbol; + char *tp = symbuf; + + for (; *sym; sym++) + { + int c1 = *sym; + if (c1 == '\\') + { + *tp++ = '\\'; + *tp++ = '\\'; + continue; + } + if (c1 < 32 || c1 > 126) + { + int c; + *tp++ = '\\'; + c = c1 >> 4; + c += 48; + if (c > 57) + c += 7; + *tp++ = c; + c = c1 & 15; + c += 48; + if (c > 57) + c += 7; + *tp++ = c; + continue; + } + *tp++ = c1; + } + *tp = 0; + return symbuf; +}