SSH_OLD_SESSIONID|
SSH_OLD_SESSIONID|SSH_BUG_DEBUG|
compat_datafellows(const char *version){	int i, ret;	char ebuf[1024];	regex_t reg;	static struct {		char	*pat;		int	bugs;	} check[] = {		{ "^OpenSSH[-_]2\\.[012]",	SSH_OLD_SESSIONID },		{ "MindTerm",		0 },		{ "^2\\.1\\.0",		SSH_BUG_SIGBLOB|SSH_BUG_HMAC|					SSH_OLD_SESSIONID },		{ "^2\\.0\\.1[3-9]",	SSH_BUG_SIGBLOB|SSH_BUG_HMAC|					SSH_OLD_SESSIONID|					SSH_BUG_PKSERVICE|SSH_BUG_X11FWD },		{ "^2\\.0\\.",		SSH_BUG_SIGBLOB|SSH_BUG_HMAC|					SSH_OLD_SESSIONID|SSH_BUG_PKAUTH|					SSH_BUG_PKSERVICE|SSH_BUG_X11FWD },		{ "^2\\.[23]\\.0",	SSH_BUG_HMAC},		{ "^2\\.[2-9]\\.",	0 },		{ "^2\\.4$",		SSH_OLD_SESSIONID}, /* Van Dyke */		{ "^3\\.0 SecureCRT",	SSH_OLD_SESSIONID},		{ "^1\\.7 SecureFX",	SSH_OLD_SESSIONID},		{ NULL,			0 }	};	/* process table, return first match */	for (i = 0; check[i].pat; i++) {		ret = regcomp(&reg, check[i].pat, REG_EXTENDED|REG_NOSUB);		if (ret != 0) {			regerror(ret, &reg, ebuf, sizeof(ebuf));			ebuf[sizeof(ebuf)-1] = '\0';			error("regerror: %s", ebuf);			continue;		}		ret = regexec(&reg, version, 0, NULL, 0);		regfree(&reg);		if (ret == 0) {			debug("match: %s pat %s\n", version, check[i].pat);			datafellows = check[i].bugs;			return;		}	}	debug("no match: %s", version);}