diff --git a/src/core/manager.c b/src/core/manager.c index 501e37339b8..7c207bed6e7 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -1968,7 +1968,6 @@ int manager_load_unit_prepare( int r; assert(m); - assert(name || path); assert(_ret); /* This will prepare the unit for loading, but not actually @@ -1977,8 +1976,13 @@ int manager_load_unit_prepare( if (path && !is_path(path)) return sd_bus_error_setf(e, SD_BUS_ERROR_INVALID_ARGS, "Path %s is not absolute.", path); - if (!name) + if (!name) { + /* 'name' and 'path' must not both be null. Check here 'path' using assert_se() to + * workaround a bug in gcc that generates a -Wnonnull warning when calling basename(), + * but this cannot be possible in any code path (See #6119). */ + assert_se(path); name = basename(path); + } t = unit_name_to_type(name); diff --git a/src/shared/install.c b/src/shared/install.c index ec2b99ab98d..21ad5aab36a 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -1013,10 +1013,14 @@ static int install_info_add( int r; assert(c); - assert(name || path); - if (!name) + if (!name) { + /* 'name' and 'path' must not both be null. Check here 'path' using assert_se() to + * workaround a bug in gcc that generates a -Wnonnull warning when calling basename(), + * but this cannot be possible in any code path (See #6119). */ + assert_se(path); name = basename(path); + } if (!unit_name_is_valid(name, UNIT_NAME_ANY)) return -EINVAL;