tree-wide: use path_startswith() rather than startswith() where ever that's appropriate

When checking path prefixes we really should use the right APIs, just in
case people add multiple slashes to their paths...
This commit is contained in:
Lennart Poettering 2017-08-09 19:03:39 +02:00
parent a119ec7c82
commit 27458ed629
7 changed files with 24 additions and 13 deletions

View file

@ -55,6 +55,7 @@
#include "terminal-util.h"
#include "time-util.h"
#include "util.h"
#include "path-util.h"
static volatile unsigned cached_columns = 0;
static volatile unsigned cached_lines = 0;
@ -556,6 +557,7 @@ int terminal_vhangup(const char *name) {
int vt_disallocate(const char *name) {
_cleanup_close_ int fd = -1;
const char *e, *n;
unsigned u;
int r;
@ -563,7 +565,8 @@ int vt_disallocate(const char *name) {
* (i.e. because it is the active one), at least clear it
* entirely (including the scrollback buffer) */
if (!startswith(name, "/dev/"))
e = path_startswith(name, "/dev/");
if (!e)
return -EINVAL;
if (!tty_is_vc(name)) {
@ -582,10 +585,11 @@ int vt_disallocate(const char *name) {
return 0;
}
if (!startswith(name, "/dev/tty"))
n = startswith(e, "tty");
if (!n)
return -EINVAL;
r = safe_atou(name+8, &u);
r = safe_atou(n, &u);
if (r < 0)
return r;

View file

@ -949,7 +949,7 @@ static void cgroup_context_apply(Unit *u, CGroupMask mask, ManagerState state) {
acc[k++] = 0;
if (startswith(a->path, "/dev/"))
if (path_startswith(a->path, "/dev/"))
whitelist_device(path, a->path, acc);
else if ((val = startswith(a->path, "block-")))
whitelist_major(path, val, 'b', acc);

View file

@ -1018,8 +1018,8 @@ int bus_cgroup_set_property(
while ((r = sd_bus_message_read(message, "(ss)", &path, &rwm)) > 0) {
if ((!startswith(path, "/dev/") &&
!startswith(path, "/run/systemd/inaccessible/") &&
if ((!path_startswith(path, "/dev/") &&
!path_startswith(path, "/run/systemd/inaccessible/") &&
!startswith(path, "block-") &&
!startswith(path, "char-")) ||
strpbrk(path, WHITESPACE))

View file

@ -31,6 +31,7 @@
#include "bus-util.h"
#include "format-util.h"
#include "logind.h"
#include "path-util.h"
#include "special.h"
#include "strv.h"
#include "unit-name.h"
@ -60,15 +61,19 @@ _const_ static usec_t when_wall(usec_t n, usec_t elapse) {
}
bool logind_wall_tty_filter(const char *tty, void *userdata) {
Manager *m = userdata;
const char *p;
assert(m);
if (!startswith(tty, "/dev/") || !m->scheduled_shutdown_tty)
if (!m->scheduled_shutdown_tty)
return true;
return !streq(tty + 5, m->scheduled_shutdown_tty);
p = path_startswith(tty, "/dev/");
if (!p)
return true;
return !streq(p, m->scheduled_shutdown_tty);
}
static int warn_wall(Manager *m, usec_t n) {

View file

@ -223,7 +223,7 @@ static int parse_argv(int argc, char *argv[]) {
* sysctl name available. */
sysctl_normalize(optarg);
if (startswith(optarg, "/proc/sys"))
if (path_startswith(optarg, "/proc/sys"))
p = strdup(optarg);
else
p = strappend("/proc/sys/", optarg);

View file

@ -21,6 +21,7 @@
#include <stdio.h>
#include <stdlib.h>
#include "path-util.h"
#include "string-util.h"
#include "udev.h"
@ -80,7 +81,7 @@ static int adm_builtin(struct udev *udev, int argc, char *argv[]) {
}
/* add /sys if needed */
if (!startswith(syspath, "/sys"))
if (!path_startswith(syspath, "/sys"))
strscpyl(filename, sizeof(filename), "/sys", syspath, NULL);
else
strscpy(filename, sizeof(filename), syspath);

View file

@ -15,6 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "path-util.h"
#include "string-util.h"
#include "udevadm-util.h"
@ -28,7 +29,7 @@ struct udev_device *find_device(struct udev *udev,
if (prefix && !startswith(id, prefix))
id = strjoina(prefix, id);
if (startswith(id, "/dev/")) {
if (path_startswith(id, "/dev/")) {
struct stat statbuf;
char type;
@ -43,7 +44,7 @@ struct udev_device *find_device(struct udev *udev,
return NULL;
return udev_device_new_from_devnum(udev, type, statbuf.st_rdev);
} else if (startswith(id, "/sys/"))
} else if (path_startswith(id, "/sys/"))
return udev_device_new_from_syspath(udev, id);
else
return NULL;