From patchwork Sat Jul 28 17:21:07 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Engelhardt X-Patchwork-Id: 173879 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3632E2C007E for ; Sun, 29 Jul 2012 03:21:55 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752933Ab2G1RVR (ORCPT ); Sat, 28 Jul 2012 13:21:17 -0400 Received: from seven.medozas.de ([5.9.24.206]:34337 "EHLO seven.medozas.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752943Ab2G1RVQ (ORCPT ); Sat, 28 Jul 2012 13:21:16 -0400 Received: by seven.medozas.de (Postfix, from userid 25121) id 4640D96A02BF; Sat, 28 Jul 2012 19:21:14 +0200 (CEST) From: Jan Engelhardt To: pablo@netfilter.org Cc: netfilter-devel@vger.kernel.org Subject: [PATCH 5/7] libxt_devgroup: guard against negative numbers Date: Sat, 28 Jul 2012 19:21:07 +0200 Message-Id: <1343496069-5442-6-git-send-email-jengelh@inai.de> X-Mailer: git-send-email 1.7.7 In-Reply-To: <1343496069-5442-1-git-send-email-jengelh@inai.de> References: <1343496069-5442-1-git-send-email-jengelh@inai.de> Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org More corrections of the strtoul kind. Signed-off-by: Jan Engelhardt --- extensions/libxt_devgroup.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) diff --git a/extensions/libxt_devgroup.c b/extensions/libxt_devgroup.c index 69ae279..4a69c82 100644 --- a/extensions/libxt_devgroup.c +++ b/extensions/libxt_devgroup.c @@ -46,14 +46,16 @@ static void devgroup_parse_groupspec(const char *arg, unsigned int *group, unsigned int *mask) { char *end; + bool ok; - *group = strtoul(arg, &end, 0); - if (end != arg && (*end == '/' || *end == '\0')) { + ok = xtables_strtoui(arg, &end, group, 0, UINT32_MAX); + if (ok && (*end == '/' || *end == '\0')) { if (*end == '/') - *mask = strtoul(end + 1, &end, 0); + ok = xtables_strtoui(end + 1, NULL, mask, + 0, UINT32_MAX); else *mask = ~0U; - if (*end != '\0' || end == arg) + if (!ok) xtables_error(PARAMETER_PROBLEM, "Bad group value \"%s\"", arg); } else {