summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorotto <otto@openbsd.org>2008-10-08 07:09:37 +0000
committerotto <otto@openbsd.org>2008-10-08 07:09:37 +0000
commit91e5054cc536709b603893e9e01e6b13057378fe (patch)
tree5d4ecbda05c61d41011c459355faf430eab5f7a5
parentGet rid of the second table entry pool (pfr_kentry_pl2); we're already (diff)
downloadwireguard-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.c15
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>. */