]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: fix compilation with gcc -O3
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 9 May 2020 06:53:27 +0000 (08:53 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 9 May 2020 07:10:25 +0000 (09:10 +0200)
../src/core/path.c: In function ‘path_serialize’:
../src/core/path.c:616:24: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  616 |                 (void) serialize_item_format(f, "path-spec", "%s %%i %%s",
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  617 |                                              path_type_to_string(s->type) //,
      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  618 |                                              //                                             s->previous_exists,
      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  619 |                                              //                                             s->path
      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  620 |                 );
      |                 ~
In function ‘path_spec_dump’,
    inlined from ‘path_dump’ at ../src/core/path.c:392:17:
../src/core/path.c:226:9: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  226 |         fprintf(f,
      |         ^~~~~~~~~~
  227 |                 "%s%s: %s\n",
      |                 ~~~~~~~~~~~~~
  228 |                 prefix,
      |                 ~~~~~~~
  229 |                 path_type_to_string(s->type),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  230 |                 s->path);
      |                 ~~~~~~~~

s->type should be valid here, so let's just add an assert.

For https://github.com/systemd/systemd/issues/6119#issuecomment-626073743.

src/core/path.c

index c7907ce4bf626a6fd793bf1d104e9e83274b9737..1bbf27c5c571c1fb2aba6a8cf5060c3609b67a63 100644 (file)
@@ -223,11 +223,10 @@ static void path_spec_mkdir(PathSpec *s, mode_t mode) {
 }
 
 static void path_spec_dump(PathSpec *s, FILE *f, const char *prefix) {
-        fprintf(f,
-                "%s%s: %s\n",
-                prefix,
-                path_type_to_string(s->type),
-                s->path);
+        const char *type;
+
+        assert_se(type = path_type_to_string(s->type));
+        fprintf(f, "%s%s: %s\n", prefix, type, s->path);
 }
 
 void path_spec_done(PathSpec *s) {
@@ -607,14 +606,16 @@ static int path_serialize(Unit *u, FILE *f, FDSet *fds) {
         (void) serialize_item(f, "result", path_result_to_string(p->result));
 
         LIST_FOREACH(spec, s, p->specs) {
+                const char *type;
                 _cleanup_free_ char *escaped = NULL;
 
                 escaped = cescape(s->path);
                 if (!escaped)
                         return log_oom();
 
+                assert_se(type = path_type_to_string(s->type));
                 (void) serialize_item_format(f, "path-spec", "%s %i %s",
-                                             path_type_to_string(s->type),
+                                             type,
                                              s->previous_exists,
                                              s->path);
         }