Module Name:    src
Committed By:   brad
Date:           Thu Aug 22 20:28:08 UTC 2019

Modified Files:
        src/libexec/lfs_cleanerd: lfs_cleanerd.c

Log Message:
Use getdiskrawname to find the device name

Reviewed by Christos


To generate a diff of this commit:
cvs rdiff -u -r1.58 -r1.59 src/libexec/lfs_cleanerd/lfs_cleanerd.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/libexec/lfs_cleanerd/lfs_cleanerd.c
diff -u src/libexec/lfs_cleanerd/lfs_cleanerd.c:1.58 src/libexec/lfs_cleanerd/lfs_cleanerd.c:1.59
--- src/libexec/lfs_cleanerd/lfs_cleanerd.c:1.58	Fri Mar 18 10:10:21 2016
+++ src/libexec/lfs_cleanerd/lfs_cleanerd.c	Thu Aug 22 20:28:08 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_cleanerd.c,v 1.58 2016/03/18 10:10:21 mrg Exp $	 */
+/* $NetBSD: lfs_cleanerd.c,v 1.59 2019/08/22 20:28:08 brad Exp $	 */
 
 /*-
  * Copyright (c) 2005 The NetBSD Foundation, Inc.
@@ -213,7 +213,7 @@ init_fs(struct clfs *fs, char *fsname)
 	int rootfd;
 	int i;
 	void *sbuf;
-	char *bn;
+	size_t mlen;
 
 	/*
 	 * Get the raw device from the block device.
@@ -222,16 +222,17 @@ init_fs(struct clfs *fs, char *fsname)
 	 */
 	if (kops.ko_statvfs(fsname, &sf, ST_WAIT) < 0)
 		return -1;
-	fs->clfs_dev = malloc(strlen(sf.f_mntfromname) + 2);
+	mlen = strlen(sf.f_mntfromname) + 2;
+	fs->clfs_dev = malloc(mlen);
 	if (fs->clfs_dev == NULL) {
 		syslog(LOG_ERR, "couldn't malloc device name string: %m");
 		return -1;
 	}
-	bn = strrchr(sf.f_mntfromname, '/');
-	bn = bn ? bn+1 : sf.f_mntfromname;
-	strlcpy(fs->clfs_dev, sf.f_mntfromname, bn - sf.f_mntfromname + 1);
-	strcat(fs->clfs_dev, "r");
-	strcat(fs->clfs_dev, bn);
+	if (getdiskrawname(fs->clfs_dev, mlen, sf.f_mntfromname) == NULL) {
+		syslog(LOG_ERR, "couldn't convert '%s' ro raw name: %m",
+		    sf.f_mntfromname);
+		return -1;
+	}
 	if ((fs->clfs_devfd = kops.ko_open(fs->clfs_dev, O_RDONLY, 0)) < 0) {
 		syslog(LOG_ERR, "couldn't open device %s for reading",
 			fs->clfs_dev);

Reply via email to