tree e3e2b131c03b3cab2f81e6cdeeaadf50071046b9
parent d72367b6f36e557f122beefaa8c6b80eb1c7f245
author Harald Welte <[EMAIL PROTECTED]> Wed, 10 Aug 2005 10:23:53 -0700
committer David S. Miller <[EMAIL PROTECTED]> Tue, 30 Aug 2005 05:51:25 -0700

[NETFILTER]: check nf_log function call arguments

Check whether pf is too large in order to prevent array overflow.

Signed-off-by: Harald Welte <[EMAIL PROTECTED]>
Signed-off-by: David S. Miller <[EMAIL PROTECTED]>

 include/linux/netfilter.h |    2 +-
 net/netfilter/nf_log.c    |   10 +++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -157,7 +157,7 @@ struct nf_logger {
 
 /* Function to register/unregister log function. */
 int nf_log_register(int pf, struct nf_logger *logger);
-void nf_log_unregister_pf(int pf);
+int nf_log_unregister_pf(int pf);
 void nf_log_unregister_logger(struct nf_logger *logger);
 
 /* Calls the registered backend logging function */
diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c
--- a/net/netfilter/nf_log.c
+++ b/net/netfilter/nf_log.c
@@ -24,6 +24,9 @@ int nf_log_register(int pf, struct nf_lo
 {
        int ret = -EBUSY;
 
+       if (pf >= NPROTO)
+               return -EINVAL;
+
        /* Any setup of logging members must be done before
         * substituting pointer. */
        spin_lock(&nf_log_lock);
@@ -38,14 +41,19 @@ int nf_log_register(int pf, struct nf_lo
 }              
 EXPORT_SYMBOL(nf_log_register);
 
-void nf_log_unregister_pf(int pf)
+int nf_log_unregister_pf(int pf)
 {
+       if (pf >= NPROTO)
+               return -EINVAL;
+
        spin_lock(&nf_log_lock);
        nf_logging[pf] = NULL;
        spin_unlock(&nf_log_lock);
 
        /* Give time to concurrent readers. */
        synchronize_net();
+
+       return 0;
 }
 EXPORT_SYMBOL(nf_log_unregister_pf);
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to