[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <200808071733.26376.denys@visp.net.lb>
Date: Thu, 7 Aug 2008 17:33:25 +0300
From: Denys Fedoryshchenko <denys@...p.net.lb>
To: Netdev <netdev@...r.kernel.org>
Cc: hadi@...erus.ca,
Stephen Hemminger <shemminger@...ux-foundation.org>
Subject: [PATCH] reset optind and fix memory leak in m_ipt/iptables target structure
According iptables sources for reusing iptables target optind must be reset to
zero, this is important in batch processing. Also if we are using iptables
target, we are allocating memory for two temporary variables and inside
structure of iptables_target, which must be freed when job done. Also
tflags and used in structure must be reset, to zero for next reuse of
structure.
Signed-off-by: Denys Fedoryshchenko <denys@...p.net.lb>
Tested-by: Denys Fedoryshchenko <denys@...p.net.lb>
---
diff -Naur iproute2-original/tc/m_ipt.c iproute2-patched/tc/m_ipt.c
--- iproute2-original/tc/m_ipt.c 2008-08-05 19:15:56.000000000 +0000
+++ iproute2-patched/tc/m_ipt.c 2008-08-05 21:39:49.000000000 +0000
@@ -277,6 +277,8 @@
if (!handle) {
fputs(dlerror(), stderr);
printf("\n");
+ free(l_name);
+ free(new_name);
return NULL;
}
}
@@ -292,12 +294,16 @@
fputs(error, stderr);
fprintf(stderr, "\n");
dlclose(handle);
+ free(l_name);
+ free(new_name);
return NULL;
}
}
}
}
+ free(l_name);
+ free(new_name);
return m;
}
@@ -512,8 +518,15 @@
*argc_p = rargc - iargc;
*argv_p = argv;
- optind = 1;
+ optind = 0;
free_opts(opts);
+ /* Clear flags if target will be used again */
+ m->tflags=0;
+ m->used=0;
+ /* Free allocated memory */
+ if (m->t)
+ free(m->t);
+
return 0;
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists