ospf6d: fix crash on filter-list handling (BZ#530)

This essentially merges the fix available from Debian build of Quagga.

* ospf6_area.c
  * area_filter_list(): use correct argv indices
  * no_area_filter_list(): idem
This commit is contained in:
Christian Hammers 2011-09-12 14:23:05 +04:00 committed by Denis Ovsienko
parent 2e35e96a11
commit c8049c165c

View File

@ -440,14 +440,14 @@ DEFUN (area_filter_list,
argc--; argc--;
argv++; argv++;
plist = prefix_list_lookup (AFI_IP6, argv[1]); plist = prefix_list_lookup (AFI_IP6, argv[0]);
if (strncmp (argv[2], "in", 2) == 0) if (strncmp (argv[1], "in", 2) == 0)
{ {
PREFIX_LIST_IN (area) = plist; PREFIX_LIST_IN (area) = plist;
if (PREFIX_NAME_IN (area)) if (PREFIX_NAME_IN (area))
free (PREFIX_NAME_IN (area)); free (PREFIX_NAME_IN (area));
PREFIX_NAME_IN (area) = strdup (argv[1]); PREFIX_NAME_IN (area) = strdup (argv[0]);
ospf6_abr_reimport (area); ospf6_abr_reimport (area);
} }
else else
@ -456,7 +456,7 @@ DEFUN (area_filter_list,
if (PREFIX_NAME_OUT (area)) if (PREFIX_NAME_OUT (area))
free (PREFIX_NAME_OUT (area)); free (PREFIX_NAME_OUT (area));
PREFIX_NAME_OUT (area) = strdup (argv[1]); PREFIX_NAME_OUT (area) = strdup (argv[0]);
ospf6_abr_enable_area (area); ospf6_abr_enable_area (area);
} }
@ -482,11 +482,11 @@ DEFUN (no_area_filter_list,
argc--; argc--;
argv++; argv++;
plist = prefix_list_lookup (AFI_IP6, argv[1]); plist = prefix_list_lookup (AFI_IP6, argv[0]);
if (strncmp (argv[2], "in", 2) == 0) if (strncmp (argv[1], "in", 2) == 0)
{ {
if (PREFIX_NAME_IN (area)) if (PREFIX_NAME_IN (area))
if (strcmp (PREFIX_NAME_IN (area), argv[1]) != 0) if (strcmp (PREFIX_NAME_IN (area), argv[0]) != 0)
return CMD_SUCCESS; return CMD_SUCCESS;
PREFIX_LIST_IN (area) = NULL; PREFIX_LIST_IN (area) = NULL;
@ -499,7 +499,7 @@ DEFUN (no_area_filter_list,
else else
{ {
if (PREFIX_NAME_OUT (area)) if (PREFIX_NAME_OUT (area))
if (strcmp (PREFIX_NAME_OUT (area), argv[1]) != 0) if (strcmp (PREFIX_NAME_OUT (area), argv[0]) != 0)
return CMD_SUCCESS; return CMD_SUCCESS;
PREFIX_LIST_OUT (area) = NULL; PREFIX_LIST_OUT (area) = NULL;