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:
committed by
Norbert Pocs
parent
009bbc0546
commit
b3f6194122
@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user