git-svn: trunk@2691
Tomasz Kojm authored on 2007/02/10 09:06:02... | ... |
@@ -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 */ |