int openconnect_set_reported_os(struct openconnect_info *vpninfo,
const char *os)
{
+ const char *allowed[] = {"linux", "linux-64", "win", "mac-intel", "android", "apple-ios"};
+
if (!os) {
#if defined(__APPLE__)
os = "mac-intel";
#endif
}
- STRDUP(vpninfo->platname, os);
- return 0;
+ for (int i = 0; i < ARRAY_SIZE(allowed); i++) {
+ if (!strcmp(os, allowed[i])) {
+ STRDUP(vpninfo->platname, os);
+ return 0;
+ }
+ }
+ return -EINVAL;
}
int openconnect_set_mobile_info(struct openconnect_info *vpninfo,
printf("\n%s:\n", _("Local system information"));
printf(" --useragent=STRING %s\n", _("HTTP header User-Agent: field"));
printf(" --local-hostname=STRING %s\n", _("Local hostname to advertise to server"));
- printf(" --os=STRING %s\n", _("OS type (linux,linux-64,win,...) to report"));
+ printf(" --os=STRING %s\n", _("OS type to report. Allowed values are the following:"));
+ printf(" %s\n", _("linux, linux-64, win, mac-intel, android, apple-ios"));
printf(" --version-string=STRING %s\n", _("reported version string during authentication"));
printf(" (%s %s)\n", _("default:"), openconnect_version_str);
case OPT_OS:
assert_nonnull_config_arg("os", config_arg);
if (openconnect_set_reported_os(vpninfo, config_arg)) {
- fprintf(stderr, _("Invalid OS identity \"%s\"\n"),
+ fprintf(stderr, _("Invalid OS identity \"%s\"\n"
+ "Allowed values: linux, linux-64, win, mac-intel, android, apple-ios\n"),
config_arg);
exit(1);
}