+2005-02-08 Matthias Clasen <mclasen@redhat.com>
+
+ * glib/gkeyfile.c (g_key_file_parse_value_as_string): Don't
+ write out of bounds.
+
+ * glib/goption.c (g_option_context_parse): Fix a
+ one-too-short memory allocation. (#166609, Nicolas Laurent)
+
+ * tests/Makefile.am (TESTS_ENVIRONMENT): Add tests with
+ MALLOC_CHECK_.
+
+ * tests/option-test.c: Add a test for unkown short options.
+
2005-02-07 Matthias Clasen <mclasen@redhat.com>
* glib/glib.symbols:
+2005-02-08 Matthias Clasen <mclasen@redhat.com>
+
+ * glib/gkeyfile.c (g_key_file_parse_value_as_string): Don't
+ write out of bounds.
+
+ * glib/goption.c (g_option_context_parse): Fix a
+ one-too-short memory allocation. (#166609, Nicolas Laurent)
+
+ * tests/Makefile.am (TESTS_ENVIRONMENT): Add tests with
+ MALLOC_CHECK_.
+
+ * tests/option-test.c: Add a test for unkown short options.
+
2005-02-07 Matthias Clasen <mclasen@redhat.com>
* glib/glib.symbols:
+2005-02-08 Matthias Clasen <mclasen@redhat.com>
+
+ * glib/gkeyfile.c (g_key_file_parse_value_as_string): Don't
+ write out of bounds.
+
+ * glib/goption.c (g_option_context_parse): Fix a
+ one-too-short memory allocation. (#166609, Nicolas Laurent)
+
+ * tests/Makefile.am (TESTS_ENVIRONMENT): Add tests with
+ MALLOC_CHECK_.
+
+ * tests/option-test.c: Add a test for unkown short options.
+
2005-02-07 Matthias Clasen <mclasen@redhat.com>
* glib/glib.symbols:
+2005-02-08 Matthias Clasen <mclasen@redhat.com>
+
+ * glib/gkeyfile.c (g_key_file_parse_value_as_string): Don't
+ write out of bounds.
+
+ * glib/goption.c (g_option_context_parse): Fix a
+ one-too-short memory allocation. (#166609, Nicolas Laurent)
+
+ * tests/Makefile.am (TESTS_ENVIRONMENT): Add tests with
+ MALLOC_CHECK_.
+
+ * tests/option-test.c: Add a test for unkown short options.
+
2005-02-07 Matthias Clasen <mclasen@redhat.com>
* glib/glib.symbols:
*q = '\\';
break;
+ case '\0':
+ g_set_error (error, G_KEY_FILE_ERROR,
+ G_KEY_FILE_ERROR_INVALID_VALUE,
+ _("Key file contains escape character "
+ "at end of line"));
+ break;
+
default:
if (pieces && *p == key_file->list_separator)
*q = key_file->list_separator;
}
}
+ if (*p == '\0')
+ break;
+
q++;
p++;
}
- if (p > value && p[-1] == '\\' && q[-1] != '\\' && *error == NULL)
- g_set_error (error, G_KEY_FILE_ERROR,
- G_KEY_FILE_ERROR_INVALID_VALUE,
- _("Key file contains escape character at end of line"));
-
*q = '\0';
if (pieces)
{
if (!nulled_out[j])
{
if (!new_arg)
- new_arg = g_malloc (strlen (arg));
+ new_arg = g_malloc (strlen (arg) + 1);
new_arg[arg_index++] = arg[j];
}
}
TESTS = $(test_programs) $(test_scripts)
TESTS_ENVIRONMENT = srcdir=$(srcdir) \
- LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset
+ LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset \
+ MALLOC_CHECK_=2
progs_ldadd = $(EFENCE) $(libglib) $(EFENCE)
thread_ldadd = $(libgthread) $(G_THREAD_LIBS) $(progs_ldadd)
#include <glib.h>
-#include "goption.h"
#include <string.h>
int error_test1_int;
g_option_context_free (context);
}
+void
+unknown_short_test (void)
+{
+ GOptionContext *context;
+ gboolean retval;
+ GError *error = NULL;
+ gchar **argv;
+ int argc;
+ GOptionEntry entries [] = { { NULL } };
+
+ context = g_option_context_new (NULL);
+ g_option_context_add_main_entries (context, entries, NULL);
+
+ /* Now try parsing */
+ argv = split_string ("program -0", &argc);
+
+ retval = g_option_context_parse (context, &argc, &argv, &error);
+ g_assert (!retval);
+
+ g_strfreev (argv);
+ g_option_context_free (context);
+}
int
main (int argc, char **argv)
rest_test4 ();
rest_test5 ();
+ /* test for bug 166609 */
+ unknown_short_test ();
+
return 0;
}