diff --git a/cfg.mk b/cfg.mk index 07fb7b2b257246f5669a552ab1fc85867d2917b5..534dc67216058036bc7b8938530e0deb258933c1 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='\' \ + 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 a5cb85c830b54687618e35624e5fd3d7c901d554..7b41d38498308eb8115e4b1bf5d8dba14ff6d596 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 ae1e19f8ef522fbade8cad6778510527aad380ff..465d5570ae9bc6dc690f1254a337fa092f976d77 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 93a26f90d136610fe91112c06436a6152c21c678..bdf46bdf52589cb2be71d3ded4aad9170ab54fda 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 ffe6ed2b3c4cf24befaccacb15960d87cceea137..4492a2b539f5737311a86c8d7b47bb8accd17af3 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"),