[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tyndur-devel] [PATCH 2/2] libc: fgets-Rueckgabe enthaelt Zeilenumbruch
! libc: Im von fgets() zurueckgegebenen String ist auch das abschliessende
Leerzeichen enthalten.
Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
src/modules/c/shell/shell.c | 7 +++++++
src/modules/init/init.c | 6 ++++++
src/modules/lib/posix/socket.c | 6 ++++++
src/modules/lib/stdlibc/file.c | 7 +++++--
src/modules/servmgr/config.c | 10 ++++++++++
5 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/src/modules/c/shell/shell.c b/src/modules/c/shell/shell.c
index cb5de50..66f91c6 100644
--- a/src/modules/c/shell/shell.c
+++ b/src/modules/c/shell/shell.c
@@ -307,6 +307,7 @@ int shell_do_cmd(void)
bool shell_script(const char* path)
{
FILE* script = fopen(path, "r");
+ size_t i;
if (!script) {
return FALSE;
@@ -314,6 +315,12 @@ bool shell_script(const char* path)
while (feof(script) == 0) {
fgets(shell_command_buffer, COMMAND_BUFFER_SIZE, script);
+
+ i = strlen(shell_command_buffer);
+ if ((i > 0) && (shell_command_buffer[i - 1] == '\n')) {
+ shell_command_buffer[i - 1] = '\0';
+ }
+
shell_do_cmd();
}
diff --git a/src/modules/init/init.c b/src/modules/init/init.c
index 80e7af0..03d6b98 100644
--- a/src/modules/init/init.c
+++ b/src/modules/init/init.c
@@ -531,10 +531,16 @@ pid_t start_program(char* path, char* args, pid_t parent_pid)
char* new_path;
char* new_args;
int ret;
+ size_t i;
fgets(interpreter, 256, f);
fclose(f);
+ i = strlen(interpreter);
+ if ((i > 0) && (interpreter[i - 1] == '\n')) {
+ interpreter[i - 1] = '\0';
+ }
+
if (strlen(interpreter) < 2) {
return FALSE;
}
diff --git a/src/modules/lib/posix/socket.c b/src/modules/lib/posix/socket.c
index f0b97e1..0616c2b 100644
--- a/src/modules/lib/posix/socket.c
+++ b/src/modules/lib/posix/socket.c
@@ -261,6 +261,7 @@ int accept(int sock, struct sockaddr* address, socklen_t* address_len)
struct lostio_internal_file* conn;
struct socket* socket = get_socket(sock);
+ size_t i;
if (socket == NULL) {
errno = EBADF;
@@ -277,6 +278,11 @@ int accept(int sock, struct sockaddr* address, socklen_t* address_len)
return -1;
}
+ i = strlen(buf);
+ if ((i > 0) && (buf[i - 1] == '\n')) {
+ buf[i - 1] = '\0';
+ }
+
clientsocket = calloc(1, sizeof(*clientsocket));
clientsocket->sa_family = AF_INET;
clientsock = create_socket(socket);
diff --git a/src/modules/lib/stdlibc/file.c b/src/modules/lib/stdlibc/file.c
index 7d5e1a8..3157247 100644
--- a/src/modules/lib/stdlibc/file.c
+++ b/src/modules/lib/stdlibc/file.c
@@ -362,12 +362,15 @@ char* fgets(char* dest, int length, FILE *io_res)
break;
} else if (c == EOF) {
continue;
- } else if (c == '\n') {
- break;
}
*dest = (char) c;
dest++;
+
+ if (c == '\n') {
+ i++;
+ break;
+ }
}
*dest = '\0';
diff --git a/src/modules/servmgr/config.c b/src/modules/servmgr/config.c
index c722e41..b28ae8a 100644
--- a/src/modules/servmgr/config.c
+++ b/src/modules/servmgr/config.c
@@ -151,6 +151,11 @@ static void config_parse_deps(const char* path,
// FIXME: Das koennte man noch etwas eleganter loesen ;-)
while (fgets(buffer, sizeof(buffer), f)) {
+ size_t i = strlen(buffer);
+ if ((i > 0) && (buffer[i - 1] == '\n')) {
+ buffer[i - 1] = '\0';
+ }
+
dep = config_service_get(buffer);
if (dep == NULL) {
printf("servmgr: Service %s haengt ab von %s; Dieser ist aber "
@@ -184,6 +189,11 @@ static void config_parse_conf(const char* path,
// FIXME: Das koennte man noch etwas eleganter loesen ;-)
while (fgets(buffer, sizeof(buffer), f)) {
+ size_t i = strlen(buffer);
+ if ((i > 0) && (buffer[i - 1] == '\n')) {
+ buffer[i - 1] = '\0';
+ }
+
if (!strcmp(buffer, "nowait")) {
conf_serv->conf.wait = NOWAIT;
} else if (!strcmp(buffer, "waitterminate")) {
--
1.5.6.5