]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix for too small length of config token
authorMarcin Haba <marcin.haba@bacula.pl>
Thu, 27 Mar 2014 17:33:11 +0000 (18:33 +0100)
committerKern Sibbald <kern@sibbald.com>
Thu, 27 Mar 2014 22:17:12 +0000 (23:17 +0100)
bacula/src/lib/lex.c
bacula/src/lib/lex.h

index d8e7dd7137522bdb4363f2665dd71063327608d2..1fdde032b12b4de283f8753aac6b514725194ff3 100644 (file)
@@ -127,6 +127,8 @@ LEX *lex_close_file(LEX *lf)
    free(lf->fname);
    free_memory(lf->line);
    lf->line = NULL;
+   free_memory(lf->str);
+   lf->str = NULL;
    if (of) {
       of->options = lf->options;      /* preserve options */
       memcpy(lf, of, sizeof(LEX));
@@ -196,6 +198,7 @@ LEX *lex_open_file(LEX *lf, const char *filename, LEX_ERROR_HANDLER *scan_error)
    lf->line = get_memory(5000);
    lf->state = lex_none;
    lf->ch = L_EOL;
+   lf->str = get_memory(5000);
    Dmsg1(dbglvl, "Return lex=%x\n", lf);
    return lf;
 }
@@ -249,7 +252,7 @@ void lex_unget_char(LEX *lf)
  */
 static void add_str(LEX *lf, int ch)
 {
-   if (lf->str_len >= MAXSTRING-3) {
+   if (lf->str_len >= sizeof_pool_memory(lf->str)) {
       Emsg3(M_ERROR_TERM, 0, _(
            _("Config token too long, file: %s, line %d, begins at line %d\n")),
              lf->fname, lf->line_no, lf->begin_line_no);
index 08db120b30c35c86101dc36f60b4e495ecdad2af..d2568fc669c3cf78bebce7de9562ea9c06d95563 100644 (file)
@@ -93,7 +93,7 @@ typedef struct s_lex_context {
    char *fname;                       /* filename */
    FILE *fd;                          /* file descriptor */
    POOLMEM *line;                     /* input line */
-   char str[MAXSTRING];               /* string being scanned */
+   POOLMEM *str;                      /* string being scanned */
    int str_len;                       /* length of string */
    int line_no;                       /* file line number */
    int col_no;                        /* char position on line */