From patchwork Mon Feb 25 14:02:37 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wang Shilong X-Patchwork-Id: 2181091 Return-Path: X-Original-To: patchwork-linux-btrfs@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 48A88DF230 for ; Mon, 25 Feb 2013 14:02:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758627Ab3BYOCn (ORCPT ); Mon, 25 Feb 2013 09:02:43 -0500 Received: from mail-pa0-f42.google.com ([209.85.220.42]:50231 "EHLO mail-pa0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756871Ab3BYOCn (ORCPT ); Mon, 25 Feb 2013 09:02:43 -0500 Received: by mail-pa0-f42.google.com with SMTP id kq12so1766078pab.29 for ; Mon, 25 Feb 2013 06:02:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer; bh=9K+ZxQfmDwE+Ob7qC3I0VP62bHZZmq46HrTjCk4rLmk=; b=kuWcUhfFDg9X150CdbA7OQPAcR3KSHravMQfy0PUGL3uV5e92UlzLBR/4JDgKH0CNZ bPHIgY08BlvVzPMCJ5SKHWx7SpEKUAAeuGBr5eVnGFckP4+2cQzTKcX6y2vxs+d5ujiG BIulNsIAd3PhQD4sARsOcT79PBVN0Ndbs8ycltU5NB+b7sAFL46Lo87f6umOqDqsciKP Fp0ehJNO3qa4Fv/9J1sRfc7OetP0lrBcbnz32IVulmJ6JmUXybgw9YNrRUG3nBK0+9Iy xHwj8oWT8o23BNgSIQuAdEefRbsDSZzI2lsqKWxnsdUo2z75leVDoihzMBBuNk4tuYFP Tmww== X-Received: by 10.66.160.34 with SMTP id xh2mr18990188pab.98.1361800962583; Mon, 25 Feb 2013 06:02:42 -0800 (PST) Received: from localhost.localdomain ([112.4.45.37]) by mx.google.com with ESMTPS id eh5sm12828009pbc.44.2013.02.25.06.02.40 (version=TLSv1 cipher=RC4-SHA bits=128/128); Mon, 25 Feb 2013 06:02:42 -0800 (PST) From: Wang Shilong To: linux-btrfs@vger.kernel.org Cc: wangshilong1991@gmail.com Subject: [PATCH 1/4] Btrfs-progs: add check for level and id in case overflow happens Date: Mon, 25 Feb 2013 22:02:37 +0800 Message-Id: <1361800957-1947-1-git-send-email-wangshilong1991@gmail.com> X-Mailer: git-send-email 1.7.11.7 Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org From: Wang Shilong qgroupid(u64) is splitted into two parts: 1) the lower 48 bit are used to represent id 2) the higher 16 bit are used to represent level So the check for id and level are necessary. Signed-off-by: Wang Shilong --- qgroup.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/qgroup.c b/qgroup.c index dafde12..fbb50ab 100644 --- a/qgroup.c +++ b/qgroup.c @@ -34,11 +34,11 @@ u64 parse_qgroupid(char *p) return id; } level = strtoull(p, &ptr_parse_end, 10); - if (ptr_parse_end != s) + if (ptr_parse_end != s || level >= (1ll << 16)) goto err; id = strtoull(s+1, &ptr_parse_end, 10); - if (ptr_parse_end != ptr_src_end) + if (ptr_parse_end != ptr_src_end || id >= (1ll << 48)) goto err; return (level << 48) | id;