Browse code

add support for SIGNDUSER and SIGNDPASS (bb#252)

git-svn: trunk@2691

Tomasz Kojm authored on 2007/02/10 09:06:02
Showing 2 changed files
... ...
@@ -1,3 +1,7 @@
1
+Sat Feb 10 01:04:59 CET 2007 (tk)
2
+---------------------------------
3
+  * sigtool/sigtool.c: add support for SIGNDUSER and SIGNDPASS (bb#252)
4
+
1 5
 Fri Feb  9 22:25:24 CET 2007 (tk)
2 6
 ---------------------------------
3 7
   * sigtool/sigtool.c: better handling of network errors
... ...
@@ -147,7 +147,7 @@ static int utf16decode(struct optstruct *opt)
147 147
 {
148 148
 	const char *fname;
149 149
 	char *newname, buff[512], *decoded;
150
-	int ret = CL_CLEAN, fd1, fd2, bytes;
150
+	int fd1, fd2, bytes;
151 151
 
152 152
 
153 153
     fname = opt_arg(opt, "utf16-decode");
... ...
@@ -218,6 +218,42 @@ static char *getdsig(const char *host, const char *user, const char *data, unsig
218 218
 #endif
219 219
 
220 220
 
221
+    if((pt = getenv("SIGNDPASS"))) {
222
+	strncpy(pass, pt, sizeof(pass));
223
+    } else {
224
+	fflush(stdin);
225
+	mprintf("Password: ");
226
+
227
+#ifdef HAVE_TERMIOS_H
228
+	if(tcgetattr(0, &old)) {
229
+	    mprintf("!getdsig: tcgetattr() failed\n");
230
+	    return NULL;
231
+	}
232
+	new = old;
233
+	new.c_lflag &= ~ECHO;
234
+	if(tcsetattr(0, TCSAFLUSH, &new)) {
235
+	    mprintf("!getdsig: tcsetattr() failed\n");
236
+	    return NULL;
237
+	}
238
+#endif
239
+
240
+	if(fgets(pass, sizeof(pass), stdin)) {
241
+	    cli_chomp(pass);
242
+	} else {
243
+	    mprintf("!getdsig: Can't get password\n");
244
+	    return NULL;
245
+	}
246
+
247
+#ifdef HAVE_TERMIOS_H
248
+	if(tcsetattr(0, TCSAFLUSH, &old)) {
249
+	    mprintf("!getdsig: tcsetattr() failed\n", host);
250
+	    memset(pass, 0, strlen(pass));
251
+	    return NULL;
252
+	}
253
+#endif
254
+	mprintf("\n");
255
+    }
256
+
221 257
 #ifdef PF_INET
222 258
     if((sockd = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
223 259
 #else
... ...
@@ -225,6 +261,7 @@ static char *getdsig(const char *host, const char *user, const char *data, unsig
225 225
 #endif
226 226
 	perror("socket()");
227 227
 	mprintf("!getdsig: Can't create socket\n");
228
+	memset(pass, 0, strlen(pass));
228 229
 	return NULL;
229 230
     }
230 231
 
... ...
@@ -236,46 +273,11 @@ static char *getdsig(const char *host, const char *user, const char *data, unsig
236 236
         close(sockd);
237 237
 	perror("connect()");
238 238
 	mprintf("!getdsig: Can't connect to ClamAV Signing Service at %s\n", host);
239
+	memset(pass, 0, strlen(pass));
239 240
 	return NULL;
240 241
     }
241
-
242 242
     memset(cmd, 0, sizeof(cmd));
243 243
 
244
-    fflush(stdin);
245
-    mprintf("Password: ");
246
-
247
-#ifdef HAVE_TERMIOS_H
248
-    if(tcgetattr(0, &old)) {
249
-	mprintf("!getdsig: tcgetattr() failed\n", host);
250
-	close(sockd);
251
-	return NULL;
252
-    }
253
-    new = old;
254
-    new.c_lflag &= ~ECHO;
255
-    if(tcsetattr(0, TCSAFLUSH, &new)) {
256
-	mprintf("!getdsig: tcsetattr() failed\n", host);
257
-	close(sockd);
258
-	return NULL;
259
-    }
260
-#endif
261
-
262
-    if(fgets(pass, sizeof(pass), stdin)) {
263
-	cli_chomp(pass);
264
-    } else {
265
-	mprintf("!getdsig: Can't get password\n");
266
-	close(sockd);
267
-	return NULL;
268
-    }
269
-
270
-#ifdef HAVE_TERMIOS_H
271
-    if(tcsetattr(0, TCSAFLUSH, &old)) {
272
-	mprintf("!getdsig: tcsetattr() failed\n", host);
273
-	close(sockd);
274
-	return NULL;
275
-    }
276
-#endif
277
-    mprintf("\n");
278
-
279 244
     if(mode == 1)
280 245
 	snprintf(cmd, sizeof(cmd) - datalen, "ClamSignPSS:%s:%s:", user, pass);
281 246
     else
... ...
@@ -527,7 +529,7 @@ static int build(struct optstruct *opt)
527 527
 	return -1;
528 528
     }
529 529
 
530
-    if((ret = cl_loaddbdir(".", &engine, &sigs))) {
530
+    if((ret = cl_load(".", &engine, &sigs, CL_DB_STDOPT))) {
531 531
 	mprintf("!build: Can't load database: %s\n", cl_strerror(ret));
532 532
 	return -1;
533 533
     } else {
... ...
@@ -634,14 +636,18 @@ static int build(struct optstruct *opt)
634 634
     /* add fake MD5 and dsig (for writeinfo) */
635 635
     strcat(header, "X:X:");
636 636
 
637
-    /* ask for builder name */
638
-    fflush(stdin);
639
-    mprintf("Builder name: ");
640
-    if(fgets(builder, sizeof(builder), stdin)) {
641
-	cli_chomp(builder);
637
+    if((pt = getenv("SIGNDUSER"))) {
638
+	strncpy(builder, pt, sizeof(builder));
642 639
     } else {
643
-	mprintf("!build: Can't get builder name\n");
644
-	return -1;
640
+	/* ask for builder name */
641
+	fflush(stdin);
642
+	mprintf("Builder name: ");
643
+	if(fgets(builder, sizeof(builder), stdin)) {
644
+	    cli_chomp(builder);
645
+	} else {
646
+	    mprintf("!build: Can't get builder name\n");
647
+	    return -1;
648
+	}
645 649
     }
646 650
 
647 651
     /* add builder */