chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ask-password: always send final NUL char
[elogind.git]
/
src
/
tty-ask-password-agent.c
diff --git
a/src/tty-ask-password-agent.c
b/src/tty-ask-password-agent.c
index dcf4b332b3beed1c87a1ef51d37e20d99d5c8a92..a414cba3748c27c16cba6ad82a5fbc2f5a4f7bbb 100644
(file)
--- a/
src/tty-ask-password-agent.c
+++ b/
src/tty-ask-password-agent.c
@@
-369,10
+369,15
@@
static int parse_password(const char *filename, char **wall) {
release_terminal();
}
release_terminal();
}
- asprintf(&packet, "+%s", password);
- free(password);
+ packet_length = 1+strlen(password)+1;
+ if (!(packet = new(char, packet_length)))
+ r = -ENOMEM;
+ else {
+ packet[0] = '+';
+ strcpy(packet+1, password);
+ }
-
packet_length = strlen(packet
);
+
free(password
);
}
if (r == -ETIME || r == -ENOENT) {
}
if (r == -ETIME || r == -ENOENT) {
@@
-382,17
+387,10
@@
static int parse_password(const char *filename, char **wall) {
}
if (r < 0) {
}
if (r < 0) {
-
log_error("Failed to query password: %s", strerror(-r));
goto finish;
}
log_error("Failed to query password: %s", strerror(-r));
goto finish;
}
- if (!packet) {
- log_error("Out of memory");
- r = -ENOMEM;
- goto finish;
- }
-
if ((socket_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) {
log_error("socket(): %m");
r = -errno;
if ((socket_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) {
log_error("socket(): %m");
r = -errno;