svn commit: r286193 - in stable/10: sys/geom/label usr.sbin/fstyp
Edward Tomasz Napierala
trasz at FreeBSD.org
Sun Aug 2 10:09:01 UTC 2015
Author: trasz
Date: Sun Aug 2 10:08:57 2015
New Revision: 286193
URL: https://svnweb.freebsd.org/changeset/base/286193
Log:
MFC r284582:
Fix off-by-one error in fstyp(8) and geom_label(4) that made them use
a single space (" ") as a CD9660 label name when no label was present.
Similar problem was also present in msdosfs label recognition.
Sponsored by: The FreeBSD Foundation
Modified:
stable/10/sys/geom/label/g_label.c
stable/10/sys/geom/label/g_label.h
stable/10/sys/geom/label/g_label_iso9660.c
stable/10/sys/geom/label/g_label_msdosfs.c
stable/10/usr.sbin/fstyp/cd9660.c
stable/10/usr.sbin/fstyp/fstyp.c
stable/10/usr.sbin/fstyp/fstyp.h
stable/10/usr.sbin/fstyp/msdosfs.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/geom/label/g_label.c
==============================================================================
--- stable/10/sys/geom/label/g_label.c Sun Aug 2 09:39:41 2015 (r286192)
+++ stable/10/sys/geom/label/g_label.c Sun Aug 2 10:08:57 2015 (r286193)
@@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$");
#include <sys/malloc.h>
#include <sys/libkern.h>
#include <sys/sbuf.h>
+#include <sys/stddef.h>
#include <sys/sysctl.h>
#include <geom/geom.h>
#include <geom/geom_slice.h>
@@ -93,6 +94,20 @@ const struct g_label_desc *g_labels[] =
NULL
};
+void
+g_label_rtrim(char *label, size_t size)
+{
+ ptrdiff_t i;
+
+ for (i = size - 1; i >= 0; i--) {
+ if (label[i] == '\0')
+ continue;
+ else if (label[i] == ' ')
+ label[i] = '\0';
+ else
+ break;
+ }
+}
static int
g_label_destroy_geom(struct gctl_req *req __unused, struct g_class *mp,
Modified: stable/10/sys/geom/label/g_label.h
==============================================================================
--- stable/10/sys/geom/label/g_label.h Sun Aug 2 09:39:41 2015 (r286192)
+++ stable/10/sys/geom/label/g_label.h Sun Aug 2 10:08:57 2015 (r286193)
@@ -88,6 +88,8 @@ extern struct g_label_desc g_label_ntfs;
extern struct g_label_desc g_label_gpt;
extern struct g_label_desc g_label_gpt_uuid;
extern struct g_label_desc g_label_disk_ident;
+
+extern void g_label_rtrim(char *label, size_t size);
#endif /* _KERNEL */
struct g_label_metadata {
Modified: stable/10/sys/geom/label/g_label_iso9660.c
==============================================================================
--- stable/10/sys/geom/label/g_label_iso9660.c Sun Aug 2 09:39:41 2015 (r286192)
+++ stable/10/sys/geom/label/g_label_iso9660.c Sun Aug 2 10:08:57 2015 (r286193)
@@ -47,7 +47,6 @@ g_label_iso9660_taste(struct g_consumer
{
struct g_provider *pp;
char *sector, *volume;
- int i;
g_topology_assert_not();
pp = cp->provider;
@@ -68,14 +67,7 @@ g_label_iso9660_taste(struct g_consumer
bzero(label, size);
strlcpy(label, volume, MIN(size, VOLUME_LEN));
g_free(sector);
- for (i = size - 1; i > 0; i--) {
- if (label[i] == '\0')
- continue;
- else if (label[i] == ' ')
- label[i] = '\0';
- else
- break;
- }
+ g_label_rtrim(label, size);
}
struct g_label_desc g_label_iso9660 = {
Modified: stable/10/sys/geom/label/g_label_msdosfs.c
==============================================================================
--- stable/10/sys/geom/label/g_label_msdosfs.c Sun Aug 2 09:39:41 2015 (r286192)
+++ stable/10/sys/geom/label/g_label_msdosfs.c Sun Aug 2 10:08:57 2015 (r286193)
@@ -48,7 +48,6 @@ g_label_msdosfs_taste(struct g_consumer
FAT32_BSBPB *pfat32_bsbpb;
FAT_DES *pfat_entry;
uint8_t *sector0, *sector;
- uint32_t i;
g_topology_assert_not();
pp = cp->provider;
@@ -200,14 +199,7 @@ g_label_msdosfs_taste(struct g_consumer
}
endofchecks:
- for (i = size - 1; i > 0; i--) {
- if (label[i] == '\0')
- continue;
- else if (label[i] == ' ')
- label[i] = '\0';
- else
- break;
- }
+ g_label_rtrim(label, size);
error:
if (sector0 != NULL)
Modified: stable/10/usr.sbin/fstyp/cd9660.c
==============================================================================
--- stable/10/usr.sbin/fstyp/cd9660.c Sun Aug 2 09:39:41 2015 (r286192)
+++ stable/10/usr.sbin/fstyp/cd9660.c Sun Aug 2 10:08:57 2015 (r286193)
@@ -45,7 +45,6 @@ int
fstyp_cd9660(FILE *fp, char *label, size_t size)
{
char *sector, *volume;
- int i;
sector = read_buf(fp, ISO9660_OFFSET, 512);
if (sector == NULL)
@@ -58,13 +57,6 @@ fstyp_cd9660(FILE *fp, char *label, size
bzero(label, size);
strlcpy(label, volume, MIN(size, VOLUME_LEN));
free(sector);
- for (i = size - 1; i > 0; i--) {
- if (label[i] == '\0')
- continue;
- else if (label[i] == ' ')
- label[i] = '\0';
- else
- break;
- }
+ rtrim(label, size);
return (0);
}
Modified: stable/10/usr.sbin/fstyp/fstyp.c
==============================================================================
--- stable/10/usr.sbin/fstyp/fstyp.c Sun Aug 2 09:39:41 2015 (r286192)
+++ stable/10/usr.sbin/fstyp/fstyp.c Sun Aug 2 10:08:57 2015 (r286193)
@@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$");
#include <err.h>
#include <errno.h>
#include <stdbool.h>
+#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
@@ -104,6 +105,21 @@ checked_strdup(const char *s)
return (c);
}
+void
+rtrim(char *label, size_t size)
+{
+ ptrdiff_t i;
+
+ for (i = size - 1; i >= 0; i--) {
+ if (label[i] == '\0')
+ continue;
+ else if (label[i] == ' ')
+ label[i] = '\0';
+ else
+ break;
+ }
+}
+
static void
usage(void)
{
Modified: stable/10/usr.sbin/fstyp/fstyp.h
==============================================================================
--- stable/10/usr.sbin/fstyp/fstyp.h Sun Aug 2 09:39:41 2015 (r286192)
+++ stable/10/usr.sbin/fstyp/fstyp.h Sun Aug 2 10:08:57 2015 (r286193)
@@ -36,6 +36,7 @@
void *read_buf(FILE *fp, off_t off, size_t len);
char *checked_strdup(const char *s);
+void rtrim(char *label, size_t size);
int fstyp_cd9660(FILE *fp, char *label, size_t size);
int fstyp_ext2fs(FILE *fp, char *label, size_t size);
Modified: stable/10/usr.sbin/fstyp/msdosfs.c
==============================================================================
--- stable/10/usr.sbin/fstyp/msdosfs.c Sun Aug 2 09:39:41 2015 (r286192)
+++ stable/10/usr.sbin/fstyp/msdosfs.c Sun Aug 2 10:08:57 2015 (r286193)
@@ -48,7 +48,6 @@ fstyp_msdosfs(FILE *fp, char *label, siz
FAT32_BSBPB *pfat32_bsbpb;
FAT_DES *pfat_entry;
uint8_t *sector0, *sector;
- uint32_t i;
sector0 = NULL;
sector = NULL;
@@ -161,14 +160,7 @@ fstyp_msdosfs(FILE *fp, char *label, siz
}
endofchecks:
- for (i = size - 1; i > 0; i--) {
- if (label[i] == '\0')
- continue;
- else if (label[i] == ' ')
- label[i] = '\0';
- else
- break;
- }
+ rtrim(label, size);
free(sector0);
free(sector);
More information about the svn-src-stable
mailing list