Index: a/examples/ssh_client.c
===================================================================
--- a/examples/ssh_client.c.orig
+++ b/examples/ssh_client.c
@@ -298,25 +298,34 @@ static void shell(ssh_session session)
 static void batch_shell(ssh_session session)
 {
     ssh_channel channel;
-    char buffer[PATH_MAX];
-    size_t i;
-    int s = 0;
+    char *buffer;
+    size_t i, s, n;
 
+    n = 0;
+    for (i = 0; i < MAXCMD && cmds[i]; ++i)
+        n += strlen(cmds[i]) + 1;
+
+    buffer = malloc(n + 1);
+
+    s = 0;
     for (i = 0; i < MAXCMD && cmds[i]; ++i) {
-        s += snprintf(buffer + s, sizeof(buffer) - s, "%s ", cmds[i]);
+        s += snprintf(buffer + s, n - s, "%s ", cmds[i]);
     }
 
     channel = ssh_channel_new(session);
     if (channel == NULL) {
+        free(buffer);
         return;
     }
 
     ssh_channel_open_session(channel);
     if (ssh_channel_request_exec(channel, buffer)) {
         printf("Error executing '%s' : %s\n", buffer, ssh_get_error(session));
+        free(buffer);
         ssh_channel_free(channel);
         return;
     }
+    free(buffer);
     select_loop(session, channel);
     ssh_channel_free(channel);
 }
