1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-07-28 01:41:48 +03:00

Fix Hurd build

It does not have a PATH_MAX compile-time limitation. Instead of using it we
can just allocate dynamically.

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Reviewed-by: Norbert Pocs <npocs@redhat.com>
Reviewed-by: Jakub Jelen <jjelen@redhat.com>
This commit is contained in:
Samuel Thibault
2023-05-18 22:33:46 +02:00
committed by Norbert Pocs
parent 009bbc0546
commit b3f6194122

View File

@ -297,25 +297,41 @@ 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;
for (i = 0; i < MAXCMD && cmds[i]; ++i) {
s += snprintf(buffer + s, sizeof(buffer) - s, "%s ", cmds[i]);
}
char *buffer = NULL;
size_t i, s, n;
channel = ssh_channel_new(session);
if (channel == NULL) {
return;
}
ssh_channel_open_session(channel);
if (ssh_channel_request_exec(channel, buffer)) {
printf("Error executing '%s' : %s\n", buffer, ssh_get_error(session));
n = 0;
for (i = 0; i < MAXCMD && cmds[i]; ++i) {
/* Including space after cmds[i] */
n += strlen(cmds[i]) + 1;
}
/* Trailing \0 */
n += 1;
buffer = malloc(n);
if (buffer == NULL) {
ssh_channel_free(channel);
return;
}
s = 0;
for (i = 0; i < MAXCMD && cmds[i]; ++i) {
s += snprintf(buffer + s, n - s, "%s ", cmds[i]);
}
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);
}