Use unsigned char for XML input
Sign extension causes some character values to be interpreted as special tokens, potentially causing the parser to hang, pass a null pointer as element name to the "elem_open" callback (which would crash the configuration processing). Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
5883b96f6a
commit
9e61bff9b9
1 changed files with 3 additions and 3 deletions
|
@ -36,7 +36,7 @@ struct ddsrt_xmlp_state {
|
||||||
size_t cbufmax; /* allocated size of cbuf (cbufn <= cbufmax) */
|
size_t cbufmax; /* allocated size of cbuf (cbufn <= cbufmax) */
|
||||||
size_t cbufmark; /* NORMARKER or marker position (cbufmark <= cbufp) for rewinding */
|
size_t cbufmark; /* NORMARKER or marker position (cbufmark <= cbufp) for rewinding */
|
||||||
int eof; /* fake EOF (for treating missing close tags as EOF) */
|
int eof; /* fake EOF (for treating missing close tags as EOF) */
|
||||||
char *cbuf; /* parser input buffer */
|
unsigned char *cbuf; /* parser input buffer */
|
||||||
FILE *fp; /* file to refill cbuf from, or NULL if parsing a string */
|
FILE *fp; /* file to refill cbuf from, or NULL if parsing a string */
|
||||||
int line; /* current line number */
|
int line; /* current line number */
|
||||||
int prevline; /* line number at last token */
|
int prevline; /* line number at last token */
|
||||||
|
@ -147,7 +147,7 @@ struct ddsrt_xmlp_state *ddsrt_xmlp_new_string (const char *string, void *varg,
|
||||||
st = ddsrt_malloc (sizeof (*st));
|
st = ddsrt_malloc (sizeof (*st));
|
||||||
st->cbufn = strlen (string);
|
st->cbufn = strlen (string);
|
||||||
st->cbufmax = st->cbufn;
|
st->cbufmax = st->cbufn;
|
||||||
st->cbuf = (char *) string;
|
st->cbuf = (unsigned char *) string;
|
||||||
st->fp = NULL;
|
st->fp = NULL;
|
||||||
ddsrt_xmlp_new_common (st);
|
ddsrt_xmlp_new_common (st);
|
||||||
ddsrt_xmlp_new_setCB (st, varg, cb);
|
ddsrt_xmlp_new_setCB (st, varg, cb);
|
||||||
|
@ -239,7 +239,7 @@ static void rewind_to_input_marker (struct ddsrt_xmlp_state *st)
|
||||||
|
|
||||||
static int next_char (struct ddsrt_xmlp_state *st)
|
static int next_char (struct ddsrt_xmlp_state *st)
|
||||||
{
|
{
|
||||||
char c;
|
unsigned char c;
|
||||||
if (!make_chars_available (st, 1)) {
|
if (!make_chars_available (st, 1)) {
|
||||||
return TOK_EOF;
|
return TOK_EOF;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue