391 lines
9.8 KiB
Diff
391 lines
9.8 KiB
Diff
diff '--color=auto' -uNr work.orig/client.c work/client.c
|
|
--- work.orig/client.c 2026-04-07 19:20:30.733614568 +0200
|
|
+++ work/client.c 2026-04-07 19:35:35.503638919 +0200
|
|
@@ -95,6 +95,32 @@
|
|
|
|
#define VERSION "6.01.16"
|
|
|
|
+static int read_string(char *buf, size_t len)
|
|
+{
|
|
+ if (scanf("%254s", buf) != 1) {
|
|
+ if (len) buf[0] = 0;
|
|
+ return 0;
|
|
+ }
|
|
+ return 1;
|
|
+}
|
|
+
|
|
+static int read_int(int *value)
|
|
+{
|
|
+ if (scanf("%d", value) != 1) {
|
|
+ *value = 0;
|
|
+ return 0;
|
|
+ }
|
|
+ return 1;
|
|
+}
|
|
+
|
|
+static int read_line(char *buf, size_t len)
|
|
+{
|
|
+ if (!fgets(buf, len, stdin)) {
|
|
+ if (len) buf[0] = 0;
|
|
+ return 0;
|
|
+ }
|
|
+ return 1;
|
|
+}
|
|
|
|
int main (int argc,char *argv[])
|
|
{
|
|
@@ -585,7 +611,7 @@
|
|
NETWORKSTATUS stat;
|
|
|
|
BuildSendMenu ();
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
@@ -593,40 +619,40 @@
|
|
case 1:
|
|
printf ("\nEnter Remote Name: ");
|
|
fflush (stdout);
|
|
- scanf ("%s",send_remote);
|
|
+ read_string(send_remote, sizeof(send_remote));
|
|
getchar ();
|
|
break;
|
|
case 2:
|
|
printf ("\nCommand Name: ");
|
|
fflush (stdout);
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
NetworkCommand (COMMAND_SEND,send_remote,st,0,0,&stat);
|
|
break;
|
|
case 3:
|
|
printf ("\nLCD Text: ");
|
|
fflush (stdout);
|
|
- fgets (st,sizeof (st),stdin);
|
|
+ read_line(st, sizeof(st));
|
|
NetworkCommand (COMMAND_LCD,st,0,LCD_TEXT | LCD_BACKLIGHT,'L',&stat);
|
|
break;
|
|
case 4:
|
|
printf ("\nLCD Init Text Line 1: ");
|
|
fflush (stdout);
|
|
- fgets (st,sizeof (st),stdin);
|
|
+ read_line(st, sizeof(st));
|
|
printf ("\nLCD Init Text Line 2: ");
|
|
fflush (stdout);
|
|
- fgets (l2,sizeof (l2),stdin);
|
|
+ read_line(l2, sizeof(l2));
|
|
strcat (st,l2);
|
|
NetworkCommand (COMMAND_LCDINIT,st,0,LCD_TEXT,'L',&stat);
|
|
break;
|
|
case 5:
|
|
printf ("\nSwitch Number: ");
|
|
fflush (stdout);
|
|
- scanf ("%d",&sw);
|
|
+ read_int(&sw);
|
|
getchar ();
|
|
printf ("\nSwitch Value: ");
|
|
fflush (stdout);
|
|
- scanf ("%d",&md);
|
|
+ read_int(&md);
|
|
getchar ();
|
|
st[0] = sw;
|
|
st[1] = md;
|
|
@@ -647,7 +673,7 @@
|
|
NETWORKSTATUS stat;
|
|
|
|
BuildLearnMenu ();
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
@@ -656,7 +682,7 @@
|
|
if (*learn_remote) NetworkCommand (COMMAND_CLOSE,learn_remote,st,0,'L',&stat);
|
|
printf ("\nEnter Remote Name: ");
|
|
fflush (stdout);
|
|
- scanf ("%s",learn_remote);
|
|
+ if (scanf("%99s", learn_remote) != 1) learn_remote[0] = 0;
|
|
getchar ();
|
|
NetworkCommand (COMMAND_LRNREM,learn_remote,st,0,'L',&stat);
|
|
break;
|
|
@@ -670,7 +696,7 @@
|
|
case 3:
|
|
printf ("\nCommand Name: ");
|
|
fflush (stdout);
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
printf ("\nPress Remote Button to learn ....");
|
|
fflush (stdout);
|
|
@@ -681,7 +707,7 @@
|
|
case 4:
|
|
printf ("\nCommand Name: ");
|
|
fflush (stdout);
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
printf ("\nPress Remote Button to learn ....");
|
|
fflush (stdout);
|
|
@@ -692,7 +718,7 @@
|
|
case 5:
|
|
printf ("\nCommand Name: ");
|
|
fflush (stdout);
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
printf ("\nPress Remote Button to learn ....");
|
|
fflush (stdout);
|
|
@@ -1108,7 +1134,7 @@
|
|
printf ("\nSelect command ");
|
|
fflush (stdout);
|
|
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
@@ -1161,7 +1187,7 @@
|
|
printf ("\nSelect command ");
|
|
fflush (stdout);
|
|
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
@@ -1213,7 +1239,7 @@
|
|
printf ("\nSelect command ");
|
|
fflush (stdout);
|
|
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
@@ -1233,7 +1259,7 @@
|
|
printf ("\nSelect command ");
|
|
fflush (stdout);
|
|
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
@@ -1285,7 +1311,7 @@
|
|
printf ("\nSelect command ");
|
|
fflush (stdout);
|
|
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
@@ -1307,7 +1333,7 @@
|
|
printf ("\nSelect command ");
|
|
fflush (stdout);
|
|
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
@@ -1350,7 +1376,7 @@
|
|
printf ("\nSelect command ");
|
|
fflush (stdout);
|
|
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
@@ -1390,7 +1416,7 @@
|
|
printf ("\nSelect command ");
|
|
fflush (stdout);
|
|
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
@@ -1404,7 +1430,7 @@
|
|
char st[255];
|
|
int choice,sel;
|
|
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
@@ -1508,7 +1534,7 @@
|
|
printf ("\n\nEnter PowerOn Remote: ");
|
|
fflush (stdout);
|
|
memset (st,0,255);
|
|
- fgets (st,255,stdin);
|
|
+ if (!fgets(st, 255, stdin)) st[0] = 0;
|
|
while (st[strlen (st) - 1] == 10 || st[strlen (st) - 1] == 13) st[strlen (st) - 1] = 0;
|
|
memcpy (status->stat[bus][adr].remote,st,80);
|
|
|
|
@@ -1517,7 +1543,7 @@
|
|
printf ("\n\nEnter PowerOn Command: ");
|
|
fflush (stdout);
|
|
memset (st,0,255);
|
|
- fgets (st,255,stdin);
|
|
+ if (!fgets(st, 255, stdin)) st[0] = 0;
|
|
while (st[strlen (st) - 1] == 10 || st[strlen (st) - 1] == 13) st[strlen (st) - 1] = 0;
|
|
memcpy (status->stat[bus][adr].command,st,20);
|
|
|
|
@@ -1526,7 +1552,7 @@
|
|
printf ("\n\nEnter PowerOff Remote: ");
|
|
fflush (stdout);
|
|
memset (st,0,255);
|
|
- fgets (st,255,stdin);
|
|
+ if (!fgets(st, 255, stdin)) st[0] = 0;
|
|
while (st[strlen (st) - 1] == 10 || st[strlen (st) - 1] == 13) st[strlen (st) - 1] = 0;
|
|
memcpy (status->stat[bus][adr].remote2,st,80);
|
|
|
|
@@ -1535,7 +1561,7 @@
|
|
printf ("\n\nEnter PowerOff Command: ");
|
|
fflush (stdout);
|
|
memset (st,0,255);
|
|
- fgets (st,255,stdin);
|
|
+ if (!fgets(st, 255, stdin)) st[0] = 0;
|
|
while (st[strlen (st) - 1] == 10 || st[strlen (st) - 1] == 13) st[strlen (st) - 1] = 0;
|
|
memcpy (status->stat[bus][adr].command2,st,20);
|
|
|
|
@@ -1544,7 +1570,7 @@
|
|
printf ("\n\nEnter MAC Address: ");
|
|
fflush (stdout);
|
|
memset (st,0,255);
|
|
- fgets (st,255,stdin);
|
|
+ if (!fgets(st, 255, stdin)) st[0] = 0;
|
|
while (st[strlen (st) - 1] == 10 || st[strlen (st) - 1] == 13) st[strlen (st) - 1] = 0;
|
|
if (st[0] == 0 || st[1] == 0) {
|
|
memset (status->stat[bus][adr].command2,0,6);
|
|
@@ -1598,7 +1624,7 @@
|
|
|
|
printf ("\nSelect panel: ");
|
|
fflush (stdout);
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
}
|
|
@@ -1653,7 +1679,7 @@
|
|
while (choice < 56) {
|
|
ShowSetStatus (adr,bus,status);
|
|
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
@@ -1682,25 +1708,29 @@
|
|
if (choice == 52) {
|
|
printf ("\nEnter PowerOn Remote: ");
|
|
fflush (stdout);
|
|
- scanf ("%s",status->stat[bus][adr].remote);
|
|
+ if (scanf("%79s", status->stat[bus][adr].remote) != 1)
|
|
+ status->stat[bus][adr].remote[0] = 0;
|
|
}
|
|
|
|
if (choice == 53) {
|
|
printf ("\nEnter PowerOn Command: ");
|
|
fflush (stdout);
|
|
- scanf ("%s",status->stat[bus][adr].command);
|
|
+ if (scanf("%19s", status->stat[bus][adr].command) != 1)
|
|
+ status->stat[bus][adr].command[0] = 0;
|
|
}
|
|
|
|
if (choice == 54) {
|
|
printf ("\nEnter PowerOff Remote: ");
|
|
fflush (stdout);
|
|
- scanf ("%s",status->stat[bus][adr].remote2);
|
|
+ if (scanf("%79s", status->stat[bus][adr].remote2) != 1)
|
|
+ status->stat[bus][adr].remote2[0] = 0;
|
|
}
|
|
|
|
if (choice == 55) {
|
|
printf ("\nEnter PowerOff Command: ");
|
|
fflush (stdout);
|
|
- scanf ("%s",status->stat[bus][adr].command2);
|
|
+ if (scanf("%19s", status->stat[bus][adr].command2) != 1)
|
|
+ status->stat[bus][adr].command2[0] = 0;
|
|
}
|
|
|
|
if (choice == 99) {
|
|
@@ -1786,7 +1816,7 @@
|
|
printf ("\n99 - Exit\n");
|
|
printf ("\nSelect command ");
|
|
fflush (stdout);
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
@@ -1818,7 +1848,7 @@
|
|
int choice = 0;
|
|
|
|
BuildMainMenu ();
|
|
- scanf ("%s",st);
|
|
+ read_string(st, sizeof(st));
|
|
getchar ();
|
|
choice = atoi (st);
|
|
|
|
Binärdateien work.orig/ip_assign64 und work/ip_assign64 sind verschieden.
|
|
diff '--color=auto' -uNr work.orig/ip_assign.c work/ip_assign.c
|
|
--- work.orig/ip_assign.c 2026-04-07 19:20:30.733614568 +0200
|
|
+++ work/ip_assign.c 2026-04-07 19:30:48.216798431 +0200
|
|
@@ -206,7 +206,7 @@
|
|
printf ("Please select device to use (0 = Exit) ");
|
|
fflush (stdout);
|
|
do {
|
|
- fgets (nm,sizeof (nm),stdin);
|
|
+ if (!fgets (nm,sizeof (nm),stdin)) nm[0] = 0;
|
|
choice = atoi (nm);
|
|
} while (nm[0] < '0');
|
|
|
|
@@ -309,7 +309,7 @@
|
|
|
|
printf ("\n\nConfigure device for DHCP (Y/N) ? ");
|
|
fflush (stdout);
|
|
- fgets (nm,sizeof (nm),stdin);
|
|
+ if (!fgets (nm,sizeof (nm),stdin)) nm[0] = 0;
|
|
printf ("\n");
|
|
|
|
if (*nm == 'Y' || *nm == 'y') ip->dhcp_flag = 1;
|
|
@@ -317,26 +317,26 @@
|
|
do {
|
|
printf ("\nEnter IP Address: ");
|
|
fflush (stdout);
|
|
- fgets (nm,sizeof (nm),stdin);
|
|
+ if (!fgets (nm,sizeof (nm),stdin)) nm[0] = 0;
|
|
ip->ip = inet_addr (nm);
|
|
} while (ip->ip == INADDR_NONE);
|
|
do {
|
|
printf ("\nEnter Netmask : ");
|
|
fflush (stdout);
|
|
- fgets (nm,sizeof (nm),stdin);
|
|
+ if (!fgets (nm,sizeof (nm),stdin)) nm[0] = 0;
|
|
ip->netmask = inet_addr (nm);
|
|
} while (ip->netmask == INADDR_NONE);
|
|
do {
|
|
printf ("\nDefault Gateway : ");
|
|
fflush (stdout);
|
|
- fgets (nm,sizeof (nm),stdin);
|
|
+ if (!fgets (nm,sizeof (nm),stdin)) nm[0] = 0;
|
|
ip->gateway = inet_addr (nm);
|
|
} while (ip->gateway == INADDR_NONE);
|
|
}
|
|
|
|
printf ("\n\nEnter device password: ");
|
|
fflush (stdout);
|
|
- fgets (ip->password,8,stdin);
|
|
+ if (!fgets (ip->password,8,stdin)) ip->password[0] = 0;
|
|
|
|
printf ("\n");
|
|
}
|
|
Binärdateien work.orig/irclient64 und work/irclient64 sind verschieden.
|
|
Binärdateien work.orig/x64/client.o und work/x64/client.o sind verschieden.
|
|
Binärdateien work.orig/x64/ip_assign.o und work/x64/ip_assign.o sind verschieden.
|