summaryrefslogtreecommitdiff
path: root/news/newsfetch/files/patch-nntp.c
blob: 7cccadece3c5a6bb4796a92875fef63387caa031 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
--- nntp.c.orig	2016-06-20 15:59:53 UTC
+++ nntp.c
@@ -20,6 +20,7 @@ extern FILE *rcfp, *rctmpfp, *socket_fp[
 
 char *header;
 #define MAXBUFSIZE 500
+#define GROUP_FMT "%99s"
 char command_buf[MAXBUFSIZE+1];
 
 readNNTPdata()
@@ -33,7 +34,7 @@ setReaderMode()
 {
 	/* dummy read to flush input */
 	readNNTPdata();
-	fprintf(socket_fp[0],"MODE READER\n");
+	fprintf(socket_fp[0],"MODE READER\r\n");
 	readNNTPdata();
 return(get_error(command_buf));
 }
@@ -140,7 +141,8 @@ while(comment)
 	else
 		fprintf(rctmpfp,"%s",command_buf);
 	}
-	items_read=sscanf(command_buf,"%s %d %d", group, &first_article, &max_article);
+	items_read=sscanf(command_buf,GROUP_FMT "%d %d", group, &first_article, &max_article);
+	group[sizeof(group)-1] = '\0';
 	if(items_read < 2)
 		return(0);
 return(items_read);
@@ -151,7 +153,7 @@ checkGroup()
 int first_art, last_art, total_art, tmp ;
 
 	fprintf(stderr,"%s: ",group);
-	fprintf(socket_fp[0],"GROUP %s\n",group);
+	fprintf(socket_fp[0],"GROUP %s\r\n",group);
 	readNNTPdata();
 	
 	#ifdef DEBUG
@@ -180,7 +182,7 @@ int first_art, last_art, total_art, tmp 
 		first_article = last_art - max_article + 1;
 	}
 	
-	fprintf(socket_fp[0],"STAT %d\n",first_article);
+	fprintf(socket_fp[0],"STAT %d\r\n",first_article);
 	readNNTPdata();
 
 	while(!get_error1(command_buf))
@@ -196,7 +198,7 @@ int first_art, last_art, total_art, tmp 
 			return(0); 
 			}
 
-		fprintf(socket_fp[0],"STAT %d\n",first_article);
+		fprintf(socket_fp[0],"STAT %d\r\n",first_article);
 		readNNTPdata();
 		}
 	fprintf(stderr,"articles %d to %d\n",first_article,last_art);
@@ -256,7 +258,7 @@ int check_header = 1;
 		fprintf(stderr,"                                    %c",0xd);
 	}
 
-	fprintf(socket_fp[0],"ARTICLE\n");
+	fprintf(socket_fp[0],"ARTICLE\r\n");
 	readNNTPdata();
 	if(!get_error(command_buf))
 		return(0);	
@@ -275,7 +277,7 @@ int check_header = 1;
 		}
 
 	/* Make it little fast */
-	fprintf(socket_fp[0],"NEXT\n");
+	fprintf(socket_fp[0],"NEXT\r\n");
 
 	article_fetching=1;
 
@@ -329,17 +331,19 @@ getGroupList()
 char groupname[100];
 
 	fprintf(stderr, "\nList of NewsGroups:\n"); 
-	fprintf(socket_fp[0],"LIST\n");
+	fprintf(socket_fp[0],"LIST\r\n");
 	readNNTPdata();
 	if(!get_error2(command_buf))
 		exit(1);	
 	readNNTPdata();
-	sscanf(command_buf,"%s",groupname);
+	sscanf(command_buf,GROUP_FMT,groupname);
+	groupname[sizeof(groupname)-1] = '\0';
 	while(command_buf[0] != '.' || command_buf[1] != 13 )/*|| command_buf[1] != 10)*/
 		{
 		fprintf(stderr,"%s\n",groupname);
 		readNNTPdata();
-		sscanf(command_buf,"%s",groupname);
+		sscanf(command_buf,GROUP_FMT,groupname);
+		groupname[sizeof(groupname)-1] = '\0';
 		}
 exit(1);
 
@@ -348,7 +352,7 @@ exit(1);
 sendQuit()
 {
 
-	fprintf(socket_fp[0],"QUIT\n");
+	fprintf(socket_fp[0],"QUIT\r\n");
 	readNNTPdata();
 }