1
0
mirror of https://github.com/systemd/systemd synced 2025-11-18 16:24:44 +01:00

Compare commits

...

5 Commits

Author SHA1 Message Date
Yu Watanabe
e772db52c3
core/exec-invoke: use strnpcpy() where appropriate (#39446) 2025-10-26 09:43:14 +09:00
Luca Boccassi
d08b2f2a06 sd-varlink: when expecting a type and refusing due to mismatch say what was received
Sometimes it is not obvious why a message is not accepted,
so explicitly say what type was received in the log message
2025-10-26 09:30:02 +09:00
Jim Spentzos
ae10e1ef80 po: Translated using Weblate (Greek)
Currently translated at 35.2% (93 of 264 strings)

Co-authored-by: Jim Spentzos <jimspentzos2000@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/el/
Translation: systemd/main
2025-10-26 09:12:44 +09:00
Mike Yuan
a169a952b6
core/exec-invoke: use strnpcpy() where appropriate 2025-10-25 19:31:06 +02:00
Mike Yuan
a181a9192b
strxcpyx: do not access dest as an array
dest is a pointer to a string, not an array. Accessing
the "first element" just happens to work, but let's
be more careful.
2025-10-25 19:31:06 +02:00
4 changed files with 40 additions and 12 deletions

View File

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-07-23 15:38+0100\n" "POT-Creation-Date: 2025-07-23 15:38+0100\n"
"PO-Revision-Date: 2025-06-30 10:36+0000\n" "PO-Revision-Date: 2025-10-25 17:21+0000\n"
"Last-Translator: Jim Spentzos <jimspentzos2000@gmail.com>\n" "Last-Translator: Jim Spentzos <jimspentzos2000@gmail.com>\n"
"Language-Team: Greek <https://translate.fedoraproject.org/projects/systemd/" "Language-Team: Greek <https://translate.fedoraproject.org/projects/systemd/"
"main/el/>\n" "main/el/>\n"
@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.12.2\n" "X-Generator: Weblate 5.13.3\n"
#: src/core/org.freedesktop.systemd1.policy.in:22 #: src/core/org.freedesktop.systemd1.policy.in:22
msgid "Send passphrase back to system" msgid "Send passphrase back to system"
@ -379,7 +379,7 @@ msgstr "Απαιτείται πιστοποίηση για να ορίσετε
#: src/import/org.freedesktop.import1.policy:22 #: src/import/org.freedesktop.import1.policy:22
msgid "Import a disk image" msgid "Import a disk image"
msgstr "" msgstr "Εισαγωγή ειδώλου δίσκου"
#: src/import/org.freedesktop.import1.policy:23 #: src/import/org.freedesktop.import1.policy:23
#, fuzzy #, fuzzy

View File

@ -41,7 +41,7 @@ size_t strnpcpy_full(char **dest, size_t size, const char *src, size_t len, bool
if (ret_truncated) if (ret_truncated)
*ret_truncated = truncated; *ret_truncated = truncated;
*dest[0] = '\0'; (*dest)[0] = '\0';
return size; return size;
} }

View File

@ -77,6 +77,7 @@
#include "stat-util.h" #include "stat-util.h"
#include "string-table.h" #include "string-table.h"
#include "strv.h" #include "strv.h"
#include "strxcpyx.h"
#include "terminal-util.h" #include "terminal-util.h"
#include "user-util.h" #include "user-util.h"
#include "utmp-wtmp.h" #include "utmp-wtmp.h"
@ -1504,7 +1505,7 @@ static void rename_process_from_path(const char *path) {
size_t len = strlen(buf); size_t len = strlen(buf);
char comm[TASK_COMM_LEN], *p = comm; char comm[TASK_COMM_LEN], *p = comm;
*p++ = '('; *p++ = '(';
p = mempcpy(p, buf + LESS_BY(len, (size_t) (TASK_COMM_LEN - 3)), MIN(len, (size_t) (TASK_COMM_LEN - 3))); strnpcpy(&p, TASK_COMM_LEN - 2, buf, len); /* strnpcpy() accounts for NUL byte internally */
*p++ = ')'; *p++ = ')';
*p = '\0'; *p = '\0';

View File

@ -1705,32 +1705,52 @@ static int varlink_idl_validate_field_element_type(const sd_varlink_field *field
case SD_VARLINK_BOOL: case SD_VARLINK_BOOL:
if (!sd_json_variant_is_boolean(v)) if (!sd_json_variant_is_boolean(v))
return varlink_idl_log(SYNTHETIC_ERRNO(EMEDIUMTYPE), "Field '%s' should be a bool, but it is not, refusing.", strna(field->name)); return varlink_idl_log(
SYNTHETIC_ERRNO(EMEDIUMTYPE),
"Field '%s' should be a bool, but it is of type '%s', refusing.",
strna(field->name),
strna(sd_json_variant_type_to_string(sd_json_variant_type(v))));
break; break;
case SD_VARLINK_INT: case SD_VARLINK_INT:
/* Allow strings here too, since integers with > 53 bits are often passed in as strings */ /* Allow strings here too, since integers with > 53 bits are often passed in as strings */
if (!sd_json_variant_is_integer(v) && !sd_json_variant_is_unsigned(v) && !sd_json_variant_is_string(v)) if (!sd_json_variant_is_integer(v) && !sd_json_variant_is_unsigned(v) && !sd_json_variant_is_string(v))
return varlink_idl_log(SYNTHETIC_ERRNO(EMEDIUMTYPE), "Field '%s' should be an int, but it is not, refusing.", strna(field->name)); return varlink_idl_log(
SYNTHETIC_ERRNO(EMEDIUMTYPE),
"Field '%s' should be an int, but it is of type '%s', refusing.",
strna(field->name),
strna(sd_json_variant_type_to_string(sd_json_variant_type(v))));
break; break;
case SD_VARLINK_FLOAT: case SD_VARLINK_FLOAT:
if (!sd_json_variant_is_number(v)) if (!sd_json_variant_is_number(v))
return varlink_idl_log(SYNTHETIC_ERRNO(EMEDIUMTYPE), "Field '%s' should be a float, but it is not, refusing.", strna(field->name)); return varlink_idl_log(
SYNTHETIC_ERRNO(EMEDIUMTYPE),
"Field '%s' should be a float, but it is of type '%s', refusing.",
strna(field->name),
strna(sd_json_variant_type_to_string(sd_json_variant_type(v))));
break; break;
case SD_VARLINK_STRING: case SD_VARLINK_STRING:
if (!sd_json_variant_is_string(v)) if (!sd_json_variant_is_string(v))
return varlink_idl_log(SYNTHETIC_ERRNO(EMEDIUMTYPE), "Field '%s' should be a string, but it is not, refusing.", strna(field->name)); return varlink_idl_log(
SYNTHETIC_ERRNO(EMEDIUMTYPE),
"Field '%s' should be a string, but it is of type '%s', refusing.",
strna(field->name),
strna(sd_json_variant_type_to_string(sd_json_variant_type(v))));
break; break;
case SD_VARLINK_OBJECT: case SD_VARLINK_OBJECT:
if (!sd_json_variant_is_object(v)) if (!sd_json_variant_is_object(v))
return varlink_idl_log(SYNTHETIC_ERRNO(EMEDIUMTYPE), "Field '%s' should be an object, but it is not, refusing.", strna(field->name)); return varlink_idl_log(
SYNTHETIC_ERRNO(EMEDIUMTYPE),
"Field '%s' should be an object, but it is of type '%s', refusing.",
strna(field->name),
strna(sd_json_variant_type_to_string(sd_json_variant_type(v))));
break; break;
@ -1759,7 +1779,10 @@ static int varlink_idl_validate_field(const sd_varlink_field *field, sd_json_var
sd_json_variant *i; sd_json_variant *i;
if (!sd_json_variant_is_array(v)) if (!sd_json_variant_is_array(v))
return varlink_idl_log(SYNTHETIC_ERRNO(EMEDIUMTYPE), "Field '%s' should be an array, but it is not, refusing.", strna(field->name)); return varlink_idl_log(
SYNTHETIC_ERRNO(EMEDIUMTYPE), "Field '%s' should be an array, but it is of type '%s', refusing.",
strna(field->name),
strna(sd_json_variant_type_to_string(sd_json_variant_type(v))));
JSON_VARIANT_ARRAY_FOREACH(i, v) { JSON_VARIANT_ARRAY_FOREACH(i, v) {
r = varlink_idl_validate_field_element_type(field, i); r = varlink_idl_validate_field_element_type(field, i);
@ -1772,7 +1795,11 @@ static int varlink_idl_validate_field(const sd_varlink_field *field, sd_json_var
sd_json_variant *e; sd_json_variant *e;
if (!sd_json_variant_is_object(v)) if (!sd_json_variant_is_object(v))
return varlink_idl_log(SYNTHETIC_ERRNO(EMEDIUMTYPE), "Field '%s' should be an object, but it is not, refusing.", strna(field->name)); return varlink_idl_log(
SYNTHETIC_ERRNO(EMEDIUMTYPE),
"Field '%s' should be an object, but it is of type '%s', refusing.",
strna(field->name),
strna(sd_json_variant_type_to_string(sd_json_variant_type(v))));
JSON_VARIANT_OBJECT_FOREACH(k, e, v) { JSON_VARIANT_OBJECT_FOREACH(k, e, v) {
r = varlink_idl_validate_field_element_type(field, e); r = varlink_idl_validate_field_element_type(field, e);