summaryrefslogtreecommitdiff
path: root/lib/printf-parse.h
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2003-11-17 15:14:21 +0000
committerBruno Haible <bruno@clisp.org>2003-11-17 15:14:21 +0000
commita416aa560a13c4fc49a39ab5f0225c999bcda510 (patch)
tree3668bf6e79affcb65427a8fa18507cab409e19c3 /lib/printf-parse.h
parentdda38ff89ea6c5c28da197cebfbe2d5b510eafb5 (diff)
downloadgnulib-a416aa560a13c4fc49a39ab5f0225c999bcda510.tar.gz
Use xsize.h to protect against memory size overflows.
Diffstat (limited to 'lib/printf-parse.h')
-rw-r--r--lib/printf-parse.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/printf-parse.h b/lib/printf-parse.h
index 54b429f129..56f7cd280e 100644
--- a/lib/printf-parse.h
+++ b/lib/printf-parse.h
@@ -1,5 +1,5 @@
/* Parse printf format string.
- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -20,6 +20,9 @@
#include "printf-args.h"
+/* Get ssize_t. */
+#include <sys/types.h>
+
/* Flags */
#define FLAG_GROUP 1 /* ' flag */
@@ -37,22 +40,22 @@ typedef struct
int flags;
const char* width_start;
const char* width_end;
- int width_arg_index;
+ ssize_t width_arg_index;
const char* precision_start;
const char* precision_end;
- int precision_arg_index;
+ ssize_t precision_arg_index;
char conversion; /* d i o u x X f e E g G c s p n U % but not C S */
- int arg_index;
+ ssize_t arg_index;
}
char_directive;
/* A parsed format string. */
typedef struct
{
- unsigned int count;
+ size_t count;
char_directive *dir;
- unsigned int max_width_length;
- unsigned int max_precision_length;
+ size_t max_width_length;
+ size_t max_precision_length;
}
char_directives;