diff options
author | 2008-10-08 07:09:37 +0000 | |
---|---|---|
committer | 2008-10-08 07:09:37 +0000 | |
commit | 91e5054cc536709b603893e9e01e6b13057378fe (patch) | |
tree | 5d4ecbda05c61d41011c459355faf430eab5f7a5 | |
parent | Get rid of the second table entry pool (pfr_kentry_pl2); we're already (diff) | |
download | wireguard-openbsd-91e5054cc536709b603893e9e01e6b13057378fe.tar.xz wireguard-openbsd-91e5054cc536709b603893e9e01e6b13057378fe.zip |
prevent access to output_paragraph with negative offset; PR 5518; ok
deraadt@
-rw-r--r-- | gnu/usr.bin/texinfo/makeinfo/xml.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/gnu/usr.bin/texinfo/makeinfo/xml.c b/gnu/usr.bin/texinfo/makeinfo/xml.c index 2db02c97439..69da60d51ba 100644 --- a/gnu/usr.bin/texinfo/makeinfo/xml.c +++ b/gnu/usr.bin/texinfo/makeinfo/xml.c @@ -1,5 +1,5 @@ /* xml.c -- xml output. - $Id: xml.c,v 1.1.1.2 2006/07/17 16:03:49 espie Exp $ + $Id: xml.c,v 1.2 2008/10/08 07:09:37 otto Exp $ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. @@ -698,7 +698,8 @@ xml_indent (void) if (xml_indentation_increment > 0) { int i; - if (output_paragraph[output_paragraph_offset-1] != '\n') + if (output_paragraph_offset > 0 + && output_paragraph[output_paragraph_offset-1] != '\n') insert ('\n'); for (i = 0; i < element_stack_index * xml_indentation_increment; i++) insert (' '); @@ -712,7 +713,8 @@ xml_start_para (void) || !xml_element_list[xml_current_element()].contains_para) return; - while (output_paragraph[output_paragraph_offset-1] == '\n') + while (output_paragraph_offset > 0 + && output_paragraph[output_paragraph_offset-1] == '\n') output_paragraph_offset--; xml_indent (); @@ -730,7 +732,8 @@ xml_end_para (void) if (!xml_in_para || xml_in_footnote) return; - while (cr_or_whitespace(output_paragraph[output_paragraph_offset-1])) + while (output_paragraph_offset > 0 + && cr_or_whitespace(output_paragraph[output_paragraph_offset-1])) output_paragraph_offset--; insert_string ("</para>"); @@ -905,12 +908,14 @@ xml_insert_element_with_attribute (elt, arg, format, va_alist) /* Eat one newline before </example> and the like. */ if (!docbook && arg == END && (xml_element_list[elt].keep_space || elt == GROUP) + && output_paragraph_offset > 0 && output_paragraph[output_paragraph_offset-1] == '\n') output_paragraph_offset--; /* And eat whitespace before </entry> in @multitables. */ if (arg == END && elt == ENTRY) - while (cr_or_whitespace(output_paragraph[output_paragraph_offset-1])) + while (output_paragraph_offset > 0 + && cr_or_whitespace(output_paragraph[output_paragraph_offset-1])) output_paragraph_offset--; /* Indent elements that can contain <para>. */ |