From: "Daniel P. Berrange" <berrange(a)redhat.com>
Remove a number of pointless checks against PATH_MAX and
add a syntax-check rule to prevent its use in future
---
cfg.mk | 5 +++++
src/security/virt-aa-helper.c | 4 ++--
src/storage/storage_backend_scsi.c | 2 +-
src/xenxs/xen_xm.c | 2 --
tools/virsh.c | 7 ++++---
5 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/cfg.mk b/cfg.mk
index 07fb7b2..534dc67 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -408,6 +408,11 @@ sc_prohibit_VIR_ERR_NO_MEMORY:
halt='use virReportOOMError, not V'IR_ERR_NO_MEMORY \
$(_sc_search_regexp)
+sc_prohibit_PATH_MAX:
+ @prohibit='\<P''ATH_MAX\>' \
+ halt='dynamically allocate paths, do not use P'ATH_MAX \
+ $(_sc_search_regexp)
+
# Use a subshell for each function, to give the optimal warning message.
include $(srcdir)/Makefile.nonreentrant
sc_prohibit_nonreentrant:
diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c
index a5cb85c..7b41d38 100644
--- a/src/security/virt-aa-helper.c
+++ b/src/security/virt-aa-helper.c
@@ -473,7 +473,7 @@ valid_name(const char *name)
* used to subvert the profile */
const char *bad = " /[]*";
- if (strlen(name) == 0 || strlen(name) > PATH_MAX - 1)
+ if (strlen(name) == 0)
return -1;
if (strcspn(name, bad) != strlen(name))
@@ -544,7 +544,7 @@ valid_path(const char *path, const bool readonly)
"/sys/devices/pci" /* for hostdev pci devices */
};
- if (path == NULL || strlen(path) > PATH_MAX - 1) {
+ if (path == NULL) {
vah_error(NULL, 0, _("bad pathname"));
return -1;
}
diff --git a/src/storage/storage_backend_scsi.c b/src/storage/storage_backend_scsi.c
index ae1e19f..465d557 100644
--- a/src/storage/storage_backend_scsi.c
+++ b/src/storage/storage_backend_scsi.c
@@ -251,7 +251,7 @@ virStorageBackendSCSINewLun(virStoragePoolObjPtr pool,
goto free_vol;
}
- if (STREQLEN(devpath, vol->target.path, PATH_MAX) &&
+ if (STREQ(devpath, vol->target.path) &&
!(STREQ(pool->def->target.path, "/dev") ||
STREQ(pool->def->target.path, "/dev/"))) {
diff --git a/src/xenxs/xen_xm.c b/src/xenxs/xen_xm.c
index 93a26f9..bdf46bd 100644
--- a/src/xenxs/xen_xm.c
+++ b/src/xenxs/xen_xm.c
@@ -501,8 +501,6 @@ xenParseXM(virConfPtr conf, int xendConfigVersion,
/* Extract the source file path*/
if (!(offset = strchr(head, ',')))
goto skipdisk;
- if ((offset - head) >= (PATH_MAX-1))
- goto skipdisk;
if (offset == head) {
disk->src = NULL; /* No source file given, eg CDROM with no media */
diff --git a/tools/virsh.c b/tools/virsh.c
index ffe6ed2..4492a2b 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -15542,11 +15542,12 @@ editWriteToTempFile (vshControl *ctl, const char *doc)
const char *tmpdir;
int fd;
- ret = vshMalloc(ctl, PATH_MAX);
-
tmpdir = getenv ("TMPDIR");
if (!tmpdir) tmpdir = "/tmp";
- snprintf (ret, PATH_MAX, "%s/virshXXXXXX.xml", tmpdir);
+ if (virAsprintf(&ret, "%s/virshXXXXXX.xml", tmpdir) < 0) {
+ vshError(ctl, "%s", _("out of memory"));
+ return NULL;
+ }
fd = mkstemps(ret, 4);
if (fd == -1) {
vshError(ctl, _("mkstemps: failed to create temporary file: %s"),
--
1.7.10.1