mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-03-08 20:58:20 +03:00
systemctl: pecify read_full_file() size argument as NULL
If it is specified as NULL read_full_file() assumes the caller wants a C string, and it looks for embedded NUL bytes to ensure that works. Given we don#t actually use the size argument here, let's drop it. (in one case the size argument is used, but not for actually processing the full returned data, but just as a shortcut to compare things with the original string. Let's drop use of that there, too given the risk of embedded NUL bytes in the data read.)
This commit is contained in:
parent
627055ce9a
commit
be81e45c74
@ -146,7 +146,6 @@ static int create_edit_temp_file(const char *new_path, const char *original_path
|
|||||||
_cleanup_free_ char *new_contents = NULL;
|
_cleanup_free_ char *new_contents = NULL;
|
||||||
_cleanup_fclose_ FILE *f = NULL;
|
_cleanup_fclose_ FILE *f = NULL;
|
||||||
char **path;
|
char **path;
|
||||||
size_t size;
|
|
||||||
|
|
||||||
r = mac_selinux_create_file_prepare(new_path, S_IFREG);
|
r = mac_selinux_create_file_prepare(new_path, S_IFREG);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
@ -161,7 +160,7 @@ static int create_edit_temp_file(const char *new_path, const char *original_path
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(errno, "Failed to change mode of \"%s\": %m", t);
|
return log_error_errno(errno, "Failed to change mode of \"%s\": %m", t);
|
||||||
|
|
||||||
r = read_full_file(new_path, &new_contents, &size);
|
r = read_full_file(new_path, &new_contents, NULL);
|
||||||
if (r < 0 && r != -ENOENT)
|
if (r < 0 && r != -ENOENT)
|
||||||
return log_error_errno(r, "Failed to read \"%s\": %m", new_path);
|
return log_error_errno(r, "Failed to read \"%s\": %m", new_path);
|
||||||
|
|
||||||
@ -182,7 +181,7 @@ static int create_edit_temp_file(const char *new_path, const char *original_path
|
|||||||
if (path_equal(*path, new_path))
|
if (path_equal(*path, new_path))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
r = read_full_file(*path, &contents, &size);
|
r = read_full_file(*path, &contents, NULL);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to read \"%s\": %m", *path);
|
return log_error_errno(r, "Failed to read \"%s\": %m", *path);
|
||||||
|
|
||||||
@ -468,10 +467,12 @@ static int trim_edit_markers(const char *path) {
|
|||||||
int r;
|
int r;
|
||||||
|
|
||||||
/* Trim out the lines between the two markers */
|
/* Trim out the lines between the two markers */
|
||||||
r = read_full_file(path, &contents, &size);
|
r = read_full_file(path, &contents, NULL);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to read temporary file \"%s\": %m", path);
|
return log_error_errno(r, "Failed to read temporary file \"%s\": %m", path);
|
||||||
|
|
||||||
|
size = strlen(contents);
|
||||||
|
|
||||||
contents_start = strstr(contents, EDIT_MARKER_START);
|
contents_start = strstr(contents, EDIT_MARKER_START);
|
||||||
if (contents_start)
|
if (contents_start)
|
||||||
contents_start += strlen(EDIT_MARKER_START);
|
contents_start += strlen(EDIT_MARKER_START);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user