static char *vcid = "$Id$";
#endif
+/* Microsoft Visual C/C++ has _snprintf() and _vsnprintf() */
+#ifdef _MSC_VER
+#define snprintf _snprintf
+#define vsnprintf _vsnprintf
+#endif
/* consider Borland C */
#ifdef __BORLANDC__
src += 2;
break;
case 'p':
- sprintf (dst, "%d", port);
+ snprintf (dst, len, "%d", port);
src += 2;
break;
default:
{
int i;
for( i = 0; parameter_table[i].name != NULL; i++ ){
- if ( strncmp(name, parameter_table[i].name, strlen(parameter_table[i].name)) == 0 )
+ if ( strcmp(name, parameter_table[i].name) == 0 )
return ¶meter_table[i];
}
return NULL;
void
read_parameter_file(void)
{
-#ifndef _WIN32
+#if !defined(_WIN32) || defined(cygwin)
char *name;
struct passwd *pw;
#endif
read_parameter_file_1(PARAMETER_FILE);
-#ifndef _WIN32
+#if !defined(_WIN32) || defined(cygwin)
pw = getpwuid(getuid());
if ( pw == NULL )
fatal("getpwuid() failed for uid: %d\n", getuid());
read_parameter_file();
initialize_direct_addr();
if (n_direct_addr_list == 0) {
- debug ("(none)\n");
+ debug ("No direct address are specified.\n");
} else {
int i;
for ( i=0; i<n_direct_addr_list; i++ ) {
if ( isprint(*buf) ) {
*tmp++ = *buf;
} else {
- sprintf( tmp, "\\x%02X", (unsigned char)*buf);
+ int consumed = tmp - work;
+ snprintf( tmp, sizeof(work)-consumed,
+ "\\x%02X", (unsigned char)*buf);
tmp += strlen(tmp);
}
}
static char buf[1000]; /* XXX, don't be fix length */
va_list args;
va_start(args, prompt);
- vsprintf(buf, prompt, args);
+ vsnprintf(buf, sizeof(buf), prompt, args);
va_end(args);
if ( getparam(ENV_SSH_ASKPASS)
/* use ssh-askpass to get password */
FILE *fp;
char *askpass = getparam(ENV_SSH_ASKPASS), *cmd;
- cmd = xmalloc(strlen(askpass) +1 +1 +strlen(buf) +1);
- sprintf(cmd, "%s \"%s\"", askpass, buf);
+ int cmd_size = strlen(askpass) +1 +1 +strlen(buf) +1 +1;
+ cmd = xmalloc(cmd_size);
+ snprintf(cmd, cmd_size, "%s \"%s\"", askpass, buf);
fp = popen(cmd, "r");
free(cmd);
if ( fp == NULL )
va_list args;
va_start( args, fmt );
- vsprintf( buf, fmt, args );
+ vsnprintf( buf, sizeof(buf), fmt, args );
va_end( args );
report_text(">>>", buf);
len = strlen(user)+strlen(pass)+1;
userpass = xmalloc(len+1);
- sprintf(userpass,"%s:%s", user, pass);
+ snprintf(userpass, len+1, "%s:%s", user, pass);
memset (pass, 0, strlen(pass));
cred = make_base64_string(userpass);
memset (userpass, 0, len);