View | Details | Raw Unified | Return to bug 1157 | Differences between
and this patch

Collapse All | Expand All

(-)ssh-keygen.c (-8 / +32 lines)
Lines 302-314 do_convert_private_ssh2_from_blob(u_char Link Here
302
	return key;
302
	return key;
303
}
303
}
304
304
305
static int
306
get_line(FILE *fp, char *line, size_t len)
307
{
308
	int c;
309
	size_t pos = 0;
310
311
	line[0] = '\0';
312
	while ((c = fgetc(fp)) != EOF) {
313
		if (pos >= len - 1) {
314
			fprintf(stderr, "input line too long.\n");
315
			exit(1);
316
		}
317
		switch(c) {
318
		case '\r':
319
			c = fgetc(fp);
320
			if (c != EOF && c != '\n' && ungetc(c, fp) == EOF) {
321
				fprintf(stderr, "unget: %s\n", strerror(errno));
322
				exit(1);
323
			}
324
			return pos;
325
		case '\n':
326
			return pos;
327
		}
328
		line[pos++] = c;
329
		line[pos] = '\0';
330
	}
331
	return pos;
332
}
333
305
static void
334
static void
306
do_convert_from_ssh2(struct passwd *pw)
335
do_convert_from_ssh2(struct passwd *pw)
307
{
336
{
308
	Key *k;
337
	Key *k;
309
	int blen;
338
	int blen;
310
	u_int len;
339
	u_int len;
311
	char line[1024], *p;
340
	char line[1024];
312
	u_char blob[8096];
341
	u_char blob[8096];
313
	char encoded[8096];
342
	char encoded[8096];
314
	struct stat st;
343
	struct stat st;
Lines 327-338 do_convert_from_ssh2(struct passwd *pw) Link Here
327
		exit(1);
356
		exit(1);
328
	}
357
	}
329
	encoded[0] = '\0';
358
	encoded[0] = '\0';
330
	while (fgets(line, sizeof(line), fp)) {
359
	while ((blen = get_line(fp, line, sizeof(line))) != -1) {
331
		if (!(p = strchr(line, '\n'))) {
360
		if (line[blen - 1] == '\\')
332
			fprintf(stderr, "input line too long.\n");
333
			exit(1);
334
		}
335
		if (p > line && p[-1] == '\\')
336
			escaped++;
361
			escaped++;
337
		if (strncmp(line, "----", 4) == 0 ||
362
		if (strncmp(line, "----", 4) == 0 ||
338
		    strstr(line, ": ") != NULL) {
363
		    strstr(line, ": ") != NULL) {
Lines 349-355 do_convert_from_ssh2(struct passwd *pw) Link Here
349
			/* fprintf(stderr, "escaped: %s", line); */
374
			/* fprintf(stderr, "escaped: %s", line); */
350
			continue;
375
			continue;
351
		}
376
		}
352
		*p = '\0';
353
		strlcat(encoded, line, sizeof(encoded));
377
		strlcat(encoded, line, sizeof(encoded));
354
	}
378
	}
355
	len = strlen(encoded);
379
	len = strlen(encoded);
(-)regress/Makefile (+4 lines)
Lines 56-61 CLEANFILES= t2.out t6.out1 t6.out2 t7.ou Link Here
56
56
57
t1:
57
t1:
58
	ssh-keygen -if ${.CURDIR}/rsa_ssh2.prv | diff - ${.CURDIR}/rsa_openssh.prv
58
	ssh-keygen -if ${.CURDIR}/rsa_ssh2.prv | diff - ${.CURDIR}/rsa_openssh.prv
59
	sed 's/$$/\r/g' ${.CURDIR}/rsa_ssh2.prv > ${OBJ}/rsa_ssh2_crnl.prv
60
	ssh-keygen -if ${OBJ}/rsa_ssh2_crnl.prv | diff - ${.CURDIR}/rsa_openssh.prv
61
	tr '\n' '\r' <${.CURDIR}/rsa_ssh2.prv > ${OBJ}/rsa_ssh2_cr.prv
62
	ssh-keygen -if ${OBJ}/rsa_ssh2_cr.prv | diff - ${.CURDIR}/rsa_openssh.prv
59
63
60
t2:
64
t2:
61
	cat ${.CURDIR}/rsa_openssh.prv > $(OBJ)/t2.out
65
	cat ${.CURDIR}/rsa_openssh.prv > $(OBJ)/t2.out

Return to bug 1157