diff -uNr ssh-2.0.10.orig/lib/sshutil/sshencode.c ssh-2.0.10/lib/sshutil/sshencode.c --- ssh-2.0.10.orig/lib/sshutil/sshencode.c Thu May 28 17:09:41 1998 +++ ssh-2.0.10/lib/sshutil/sshencode.c Fri Oct 30 01:56:42 1998 @@ -89,7 +89,11 @@ case SSH_FORMAT_EXTENDED: encoder = va_arg(ap, SshEncoder); +#ifndef __powerpc__ (*encoder)(buffer, &ap); +#else + (*encoder)(buffer, (va_list *)ap); +#endif break; case SSH_FORMAT_END: @@ -497,8 +501,13 @@ decoder = va_arg(ap, SshDecoder); /* Try decoding. */ +#ifndef __powerpc__ start_of_ap = ap; size = (*decoder)(buf + offset, len - offset, &ap); +#else + __va_copy(start_of_ap, ap); + size = (*decoder)(buf + offset, len - offset, (va_list *)ap); +#endif if (size == 0) goto fail; @@ -509,7 +518,11 @@ decoders = ssh_xrealloc(decoders, (num_decoders + 1) * sizeof(*decoders)); decoders[num_decoders].decoder = decoder; +#ifndef __powerpc__ decoders[num_decoders].ap = start_of_ap; +#else + __va_copy(decoders[num_decoders].ap, start_of_ap); +#endif num_decoders++; /* Move over parsed data. */ @@ -540,7 +553,11 @@ if (num_decoders > 0) { for (i = 0; i < num_decoders; i++) +#ifndef __powerpc__ (*decoders[i].decoder)(SSH_DECODE_FREE, 0, &decoders[i].ap); +#else + (*decoders[i].decoder)(SSH_DECODE_FREE, 0, (va_list *)decoders[i].ap); +#endif ssh_xfree(decoders); } return 0;