return flag;
}
-CSTR hex_format = "%x%s";
-CSTR dec_format = "%u%s";
-CSTR octal_format = "%o%s";
+CSTR hex_format = "%x%1s";
+CSTR dec_format = "%u%1s";
+CSTR octal_format = "%o%1s";
static UInt4 replaceExtraOptions(ConnInfo *ci, UInt4 flag, BOOL overwrite)
{
if (overwrite)
BOOL setExtraOptions(ConnInfo *ci, const char *optstr, const char *format)
{
UInt4 flag = 0, cnt;
+ char dummy[2];
if (!format)
{
format = dec_format;
}
- if (cnt = sscanf(optstr, format, &flag), cnt < 1)
+ if (cnt = sscanf(optstr, format, &flag, dummy), cnt < 1) // format error
return FALSE;
- else if (cnt > 1)
+ else if (cnt > 1) // format error
return FALSE;
replaceExtraOptions(ci, flag, TRUE);
return TRUE;
MYLOG(0, "entering got ci=%p\n", ci);
+ /* ExtraOptions */
+ GetDlgItemText(hdlg, DS_EXTRA_OPTIONS, buf, sizeof(buf));
+ if (!setExtraOptions(ci, buf, NULL))
+ {
+ MessageBox(hdlg, "ExtraOptions must be hex, decimal or octal", "Format error", MB_ICONEXCLAMATION | MB_OK);
+ return 1;
+ }
/* Readonly */
ITOA_FIXED(ci->onlyread, IsDlgButtonChecked(hdlg, DS_READONLY));
else
ci->numeric_as = DEFAULT_NUMERIC_AS;
- GetDlgItemText(hdlg, DS_EXTRA_OPTIONS, buf, sizeof(buf));
- setExtraOptions(ci, buf, NULL);
ITOA_FIXED(ci->show_system_tables, IsDlgButtonChecked(hdlg, DS_SHOWSYSTEMTABLES));
ITOA_FIXED(ci->row_versioning, IsDlgButtonChecked(hdlg, DS_ROWVERSIONING));