Revision 363a37d5 slirp/tcp_subr.c
b/slirp/tcp_subr.c | ||
---|---|---|
629 | 629 |
struct mbuf *m; |
630 | 630 |
{ |
631 | 631 |
u_int n1, n2, n3, n4, n5, n6; |
632 |
char buff[256];
|
|
632 |
char buff[257];
|
|
633 | 633 |
u_int32_t laddr; |
634 | 634 |
u_int lport; |
635 | 635 |
char *bptr; |
... | ... | |
673 | 673 |
} |
674 | 674 |
} |
675 | 675 |
} |
676 |
so_rcv->sb_cc = sprintf(so_rcv->sb_data, "%d,%d\r\n", n1, n2); |
|
676 |
so_rcv->sb_cc = snprintf(so_rcv->sb_data, |
|
677 |
so_rcv->sb_datalen, |
|
678 |
"%d,%d\r\n", n1, n2); |
|
677 | 679 |
so_rcv->sb_rptr = so_rcv->sb_data; |
678 | 680 |
so_rcv->sb_wptr = so_rcv->sb_data + so_rcv->sb_cc; |
679 | 681 |
} |
... | ... | |
1007 | 1009 |
n4 = (laddr & 0xff); |
1008 | 1010 |
|
1009 | 1011 |
m->m_len = bptr - m->m_data; /* Adjust length */ |
1010 |
m->m_len += sprintf(bptr,"ORT %d,%d,%d,%d,%d,%d\r\n%s", |
|
1011 |
n1, n2, n3, n4, n5, n6, x==7?buff:""); |
|
1012 |
m->m_len += snprintf(bptr, m->m_hdr.mh_size - m->m_len, |
|
1013 |
"ORT %d,%d,%d,%d,%d,%d\r\n%s", |
|
1014 |
n1, n2, n3, n4, n5, n6, x==7?buff:""); |
|
1012 | 1015 |
return 1; |
1013 | 1016 |
} else if ((bptr = (char *)strstr(m->m_data, "27 Entering")) != NULL) { |
1014 | 1017 |
/* |
... | ... | |
1038 | 1041 |
n4 = (laddr & 0xff); |
1039 | 1042 |
|
1040 | 1043 |
m->m_len = bptr - m->m_data; /* Adjust length */ |
1041 |
m->m_len += sprintf(bptr,"27 Entering Passive Mode (%d,%d,%d,%d,%d,%d)\r\n%s", |
|
1042 |
n1, n2, n3, n4, n5, n6, x==7?buff:""); |
|
1044 |
m->m_len += snprintf(bptr, m->m_hdr.mh_size - m->m_len, |
|
1045 |
"27 Entering Passive Mode (%d,%d,%d,%d,%d,%d)\r\n%s", |
|
1046 |
n1, n2, n3, n4, n5, n6, x==7?buff:""); |
|
1043 | 1047 |
|
1044 | 1048 |
return 1; |
1045 | 1049 |
} |
... | ... | |
1062 | 1066 |
} |
1063 | 1067 |
if (m->m_data[m->m_len-1] == '\0' && lport != 0 && |
1064 | 1068 |
(so = solisten(0, so->so_laddr.s_addr, htons(lport), SS_FACCEPTONCE)) != NULL) |
1065 |
m->m_len = sprintf(m->m_data, "%d", ntohs(so->so_fport))+1; |
|
1069 |
m->m_len = snprintf(m->m_data, m->m_hdr.mh_size, "%d", |
|
1070 |
ntohs(so->so_fport)) + 1; |
|
1066 | 1071 |
return 1; |
1067 | 1072 |
|
1068 | 1073 |
case EMU_IRC: |
... | ... | |
1079 | 1084 |
return 1; |
1080 | 1085 |
|
1081 | 1086 |
m->m_len = bptr - m->m_data; /* Adjust length */ |
1082 |
m->m_len += sprintf(bptr, "DCC CHAT chat %lu %u%c\n", |
|
1083 |
(unsigned long)ntohl(so->so_faddr.s_addr), |
|
1084 |
ntohs(so->so_fport), 1); |
|
1087 |
m->m_len += snprintf(bptr, m->m_hdr.mh_size, |
|
1088 |
"DCC CHAT chat %lu %u%c\n", |
|
1089 |
(unsigned long)ntohl(so->so_faddr.s_addr), |
|
1090 |
ntohs(so->so_fport), 1); |
|
1085 | 1091 |
} else if (sscanf(bptr, "DCC SEND %256s %u %u %u", buff, &laddr, &lport, &n1) == 4) { |
1086 | 1092 |
if ((so = solisten(0, htonl(laddr), htons(lport), SS_FACCEPTONCE)) == NULL) |
1087 | 1093 |
return 1; |
1088 | 1094 |
|
1089 | 1095 |
m->m_len = bptr - m->m_data; /* Adjust length */ |
1090 |
m->m_len += sprintf(bptr, "DCC SEND %s %lu %u %u%c\n", |
|
1091 |
buff, (unsigned long)ntohl(so->so_faddr.s_addr), |
|
1092 |
ntohs(so->so_fport), n1, 1); |
|
1096 |
m->m_len += snprintf(bptr, m->m_hdr.mh_size, |
|
1097 |
"DCC SEND %s %lu %u %u%c\n", buff, |
|
1098 |
(unsigned long)ntohl(so->so_faddr.s_addr), |
|
1099 |
ntohs(so->so_fport), n1, 1); |
|
1093 | 1100 |
} else if (sscanf(bptr, "DCC MOVE %256s %u %u %u", buff, &laddr, &lport, &n1) == 4) { |
1094 | 1101 |
if ((so = solisten(0, htonl(laddr), htons(lport), SS_FACCEPTONCE)) == NULL) |
1095 | 1102 |
return 1; |
1096 | 1103 |
|
1097 | 1104 |
m->m_len = bptr - m->m_data; /* Adjust length */ |
1098 |
m->m_len += sprintf(bptr, "DCC MOVE %s %lu %u %u%c\n", |
|
1099 |
buff, (unsigned long)ntohl(so->so_faddr.s_addr), |
|
1100 |
ntohs(so->so_fport), n1, 1); |
|
1105 |
m->m_len += snprintf(bptr, m->m_hdr.mh_size, |
|
1106 |
"DCC MOVE %s %lu %u %u%c\n", buff, |
|
1107 |
(unsigned long)ntohl(so->so_faddr.s_addr), |
|
1108 |
ntohs(so->so_fport), n1, 1); |
|
1101 | 1109 |
} |
1102 | 1110 |
return 1; |
1103 | 1111 |
|
... | ... | |
1285 | 1293 |
|
1286 | 1294 |
/* FALLTHROUGH */ |
1287 | 1295 |
case CTL_ALIAS: |
1288 |
sb->sb_cc = sprintf(sb->sb_wptr,
|
|
1289 |
"Error: No application configured.\r\n");
|
|
1296 |
sb->sb_cc = snprintf(sb->sb_wptr, sb->sb_datalen - (sb->sb_wptr - sb->sb_data),
|
|
1297 |
"Error: No application configured.\r\n");
|
|
1290 | 1298 |
sb->sb_wptr += sb->sb_cc; |
1291 | 1299 |
return(0); |
1292 | 1300 |
|
Also available in: Unified diff