From owner-freebsd-bugs@FreeBSD.ORG Mon Aug 1 14:50:11 2011 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 352031065672 for ; Mon, 1 Aug 2011 14:50:10 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id CEF888FC12 for ; Mon, 1 Aug 2011 14:50:10 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id p71EoALU022919 for ; Mon, 1 Aug 2011 14:50:10 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p71EoAiA022918; Mon, 1 Aug 2011 14:50:10 GMT (envelope-from gnats) Resent-Date: Mon, 1 Aug 2011 14:50:10 GMT Resent-Message-Id: <201108011450.p71EoAiA022918@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Robert Millan Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BB5FC1065672 for ; Mon, 1 Aug 2011 14:40:27 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 92D478FC1C for ; Mon, 1 Aug 2011 14:40:27 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p71EeRuq003889 for ; Mon, 1 Aug 2011 14:40:27 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.4/8.14.4/Submit) id p71EeRjW003879; Mon, 1 Aug 2011 14:40:27 GMT (envelope-from nobody) Message-Id: <201108011440.p71EeRjW003879@red.freebsd.org> Date: Mon, 1 Aug 2011 14:40:27 GMT From: Robert Millan To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: misc/159357: ZFS MAXNAMELEN macro has confusing name (off-by-one) X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Aug 2011 14:50:11 -0000 >Number: 159357 >Category: misc >Synopsis: ZFS MAXNAMELEN macro has confusing name (off-by-one) >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Aug 01 14:50:10 UTC 2011 >Closed-Date: >Last-Modified: >Originator: Robert Millan >Release: FreeBSD 8.2 >Organization: >Environment: >Description: It's not clear what MAXNAMELEN in ZFS compat environment means. Name indicates it's the maximum name length (for ZFS objects), but actual checks error out when requested name has the maximum length. In practice this makes it the maximum plus one: ./sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c: if (dsl_dataset_namelen(ds) + 1 + strlen(snapname) >= MAXNAMELEN) ./sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c: if (dsl_dir_namelen(ds->ds_dir) + 1 + strlen(newsnapname) >= MAXNAMELEN) ./sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c: if (strlen(oldname) + delta >= MAXNAMELEN) ./sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c: if (strlcat(zc->zc_name, "@", sizeof (zc->zc_name)) >= MAXNAMELEN) { ./sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c: if (strlen(propname) >= ZAP_MAXNAMELEN) ./sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c: if (strlen(propname) >= ZAP_MAXNAMELEN) ./sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c: if (strlen(nvpair_name(elem)) >= ZAP_MAXNAMELEN) ./sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c: if (strlen(path) >= MAXNAMELEN) ./sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c: if (p-path >= MAXNAMELEN) ./sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c: if (p-path >= MAXNAMELEN) ./sys/cddl/contrib/opensolaris/common/zfs/zfs_namecheck.c: if (strlen(path) >= MAXNAMELEN) { ./sys/cddl/contrib/opensolaris/common/zfs/zfs_namecheck.c: if (strlen(path) >= MAXNAMELEN) { ./sys/cddl/contrib/opensolaris/common/zfs/zfs_namecheck.c: if (end - start >= MAXNAMELEN) { ./sys/cddl/contrib/opensolaris/common/zfs/zfs_namecheck.c: if (strlen(pool) >= MAXNAMELEN) { ./cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c: } else if (p - volname >= ZFS_MAXNAMELEN) { ./cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c: if (strlen(nvpair_name(elem)) >= ZAP_MAXNAMELEN) { >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: