From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 25788 invoked from network); 14 May 2022 22:16:36 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 14 May 2022 22:16:36 -0000 Received: (qmail 21894 invoked by uid 550); 14 May 2022 22:16:32 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 21862 invoked from network); 14 May 2022 22:16:31 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=zhmBfjlJLDNxioayzvS7uWr6h1uPzXo5uCM4y5AOlg0=; b=AZr/QkobVKvJUv1STqgj+royIOo5utMAR/UlWDO8O9VQxRNvq2dkwSjAgY7ab13Tk3 R0o2ZNY8oXnG/NZFQhx5AtHySpsdnCPK0uGACxgJqHSaXAKER+cFtNVyJlw769V/floi aCrOFN8GzzukliLtw6RWsnOobSx+eLx3E/srnUWR/upYQbONjt+JNpecy/35ubPZAcBM aTllxTd53zWFwYxktMFa7A2mSUcX3nFWtcmaRbA8ZOYF/aMwVpWoNiL4/BQ3It0Yw2Yd 2z1lJu9iZ6UeqCVGyAHNbmEEmQiwSC2crxLx0vSHTp/REUV9IXgoNAC7LnzOdnFtIO0r OrMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=zhmBfjlJLDNxioayzvS7uWr6h1uPzXo5uCM4y5AOlg0=; b=CiMBGaVP7FAe3aqcDF+hI3CirSMliD/z6oOt82GJb9TrpbIVi2hRkGSS+1YzkIIGZq ckeOF7t3hhHQCyLxKQqEkFBHA2pxccg/ncmszoSFTKVCHMyMqys0euM5nF3kNM45Mdzh QJdHXVwSluFs/W2rADxBhQoyb7gQtjYz3mG3CdBNsGd/cIPKq2mpw/Mwk1nzMCFQIcDV Qi8A23/mHho72S/aQof49VRMDq6K6tQikDb8E8WQHVTMhyrxcXYYbKTJWmmqAYEAM95n M9KNR9VQQXemMRwbjAs2uVQeglxA/FA49DGWC2oskBX7//eaAHccymvMdzgdq10dkFIa MJ8w== X-Gm-Message-State: AOAM530CdK8DZdDFeJVxfE4zXYG/5RBSJZ0s9Ktc9DYeRmhRQz0uCo7K x84l2NRIV3uA5jvmvXTNZdJPESi34ICaZ5uG2jE= X-Google-Smtp-Source: ABdhPJyWVldoY03nMLLuryWNCNH6W/g+H3U2/kLg8srGBCa/WhsqxAoD4HycOcL1gSuLE30gFFJ7l5S9E+2T0Mf9ido= X-Received: by 2002:a05:6808:1825:b0:326:3e14:f156 with SMTP id bh37-20020a056808182500b003263e14f156mr5308855oib.144.1652566579009; Sat, 14 May 2022 15:16:19 -0700 (PDT) MIME-Version: 1.0 References: <20210915221155.3977763-4-hi@alyssa.is> <20210920042140.GT13220@brightrain.aerifal.cx> <20220109031819.GO7074@brightrain.aerifal.cx> <878rvj1tut.fsf@alyssa.is> <20220113174037.GA7074@brightrain.aerifal.cx> <875yqn1n8g.fsf@alyssa.is> <20220512140835.GJ7074@brightrain.aerifal.cx> <20220512211014.GL7074@brightrain.aerifal.cx> <20220514042409.GO7074@brightrain.aerifal.cx> In-Reply-To: <20220514042409.GO7074@brightrain.aerifal.cx> From: Oliver Ford Date: Sat, 14 May 2022 23:16:14 +0100 Message-ID: To: Rich Felker Cc: musl@lists.openwall.com Content-Type: text/plain; charset="UTF-8" Subject: Re: [musl] [PATCH musl v2 3/3] mntent: fix parsing lines with optional fields On Sat, May 14, 2022 at 5:24 AM Rich Felker wrote: > This has UB unless ptr points to at least len bytes. You can only > evaluate ptr+len or ptr[len] after confirming that. The strncmp is the > most natural (and free) way of confirming it. You could assign end > after the strncmp but I think just using ptr[len] instead of *end > makes it easier. > > > if (!strncmp(ptr, opt, len) && > > (*end == '\0' || *end == ',' || *end == '=')) return ptr; > > ptr = strchr(ptr, ','); > > if (ptr) ptr++; > > } > > > > return NULL; > > Minor style nit: NULL is generally not used in musl anymore; just 0 is > fine here. > > BTW you dropped the list from CC; I re-added it. > > Rich Version below should be correct, now uses ptr[len] instead of the *end. char *hasmntopt(const struct mntent *mnt, const char *opt) { char *ptr = mnt->mnt_opts; size_t len = strlen(opt); while (ptr) { if (!strncmp(ptr, opt, len) && (ptr[len] == '\0' || ptr[len] == ',' || ptr[len] == '=')) return ptr; ptr = strchr(ptr, ','); if (ptr) ptr++; } return 0; }