diff --git a/src/main.c b/src/main.c
index 5ad9b96bc13ac3f7bc0f1d1652bbe3213c168503..68e0f8caffc3620058118bb4b956845ba8303ad6 100644
--- a/src/main.c
+++ b/src/main.c
@@ -163,7 +163,8 @@ parse_commands_file (struct WpDaemonData *d, GInputStream * stream,
   linestart = cur = buffer;
 
   do {
-    bytes_read = g_input_stream_read (stream, cur, sizeof (buffer), NULL, error);
+    bytes_read = g_input_stream_read (stream, cur,
+        sizeof (buffer) - (cur - linestart), NULL, error);
     if (bytes_read < 0)
       return FALSE;
     else if (bytes_read == 0) {