← Commit list

64a5f9678

Rob Landley
Rob Landley
2005-11-10
SOURCE BUG Duration: 7s

Subject

telnetd -b (bind to specific address) support from Iuri Gomes Diniz.

SOURCE BUG

This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)

→ Bu hatanin tam hikayesini ve duzeltme diffini gor

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

include/usage.h+1 -0
@@ -2951,6 +2951,7 @@
"Telnetd listens for incoming TELNET connections on PORT.\n" \
"Options:\n" \
"\t-p PORT\tlisten for connections on PORT (default 23)\n" \
+ "\t-b ADDR\tlisten for connections on ADDR (default 0.0.0.0)\n"\
"\t-l LOGIN\texec LOGIN on connect (default /bin/sh)\n" \
"\t-f issue_file\tDisplay issue_file instead of /etc/issue"
#endif
networking/telnetd.c+9 -1
@@ -33,6 +33,7 @@
#include <unistd.h>
#include <errno.h>
#include <netinet/in.h>
+#include <arpa/inet.h>
#include <fcntl.h>
#include <stdio.h>
#include <signal.h>
@@ -390,13 +391,14 @@ telnetd_main(int argc, char **argv)
#ifndef CONFIG_FEATURE_TELNETD_INETD
int on = 1;
int portnbr = 23;
+ struct in_addr bind_addr = { .s_addr = 0x0 };
#endif /* CONFIG_FEATURE_TELNETD_INETD */
int c;
static const char options[] =
#ifdef CONFIG_FEATURE_TELNETD_INETD
"f:l:";
#else /* CONFIG_EATURE_TELNETD_INETD */
- "f:l:p:";
+ "f:l:p:b:";
#endif /* CONFIG_FEATURE_TELNETD_INETD */
int maxlen, w, r;
@@ -418,6 +420,10 @@ telnetd_main(int argc, char **argv)
case 'p':
portnbr = atoi(optarg);
break;
+ case 'b':
+ if (inet_aton(optarg, &bind_addr) == 0)
+ bb_show_usage();
+ break;
#endif /* CONFIG_FEATURE_TELNETD_INETD */
default:
bb_show_usage();
@@ -452,9 +458,11 @@ telnetd_main(int argc, char **argv)
#ifdef CONFIG_FEATURE_IPV6
sa.sin6_family = AF_INET6;
sa.sin6_port = htons(portnbr);
+ /* sa.sin6_addr = bind_addr6; */
#else
sa.sin_family = AF_INET;
sa.sin_port = htons(portnbr);
+ sa.sin_addr = bind_addr;
#endif
if (bind(master_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {