Check whether pf is too large in order to prevent array overflow.
Signed-off-by: Harald Welte <laforge@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
 
 /* 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 */
 
 {
        int ret = -EBUSY;
 
+       if (pf >= NPROTO)
+               return -EINVAL;
+
        /* Any setup of logging members must be done before
         * substituting pointer. */
        spin_lock(&nf_log_lock);
 }              
 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);