Commit Graph

1140 Commits

Author SHA1 Message Date
Evan Miller
eb5e6348b7 Fix misleading indentation 2020-12-28 21:08:50 -05:00
Evan Miller
5705d595c8 Replace constant with sizeof() 2020-12-28 21:06:38 -05:00
Evan Miller
a0ebd91114 Fix potential stack corruption
A mal-formed catalog could overrun certain stack variables. Move the
variables to the heap and allocate them to hold the active bind size.
2020-12-28 21:02:17 -05:00
Evan Miller
d35807cd6c Remove unused variable 2020-12-28 20:22:19 -05:00
Evan Miller
2bb31f05ee Improve bounds checking
No particular crashes, but replace strcpy / strncpy with snprintf
and GLib functions wherever possible.
2020-12-28 20:12:39 -05:00
Evan Miller
31d8bc13aa Fix extra newline in mdb-sql prompt
A newline appeared after "=> " when readline was not found on the
system.
2020-12-28 20:11:06 -05:00
Evan Miller
e2c597f669 Update NEWS file for 0.9.1 Beta 1 2020-12-23 15:40:39 -05:00
Evan Miller
6ebe1b89f5 Merge branch 'dev' of github.com:mdbtools/mdbtools into dev 2020-12-23 15:37:18 -05:00
Evan Miller
30a4742d70 Version 0.9.1, Beta 1 2020-12-23 15:36:18 -05:00
Evan Miller
2becb08714
Windows GitHub Action (#231)
* Migrate the Windows Msys2 build from Appveyor to GitHub Actions
* Fix build with newer versions of Msys2 (fix `vasprintf` conflict)
* Enable SQL tests on the Cygwin build on Appveyor
* Fix an error message about Bison not being available when in fact Flex was not available
* Don't fail fast with Mac and Linux GitHub Actions
2020-12-23 09:34:21 -05:00
Evan Miller
76c2ada332 Use scientific notation only for very small numbers
See #84
2020-12-21 17:51:27 -05:00
Evan Miller
ccd19c69fa SQLite does not support foreign keys via ALTER TABLE
See #82. A complete solution would add the foreign keys to CREATE TABLE
but the goal here is to stop generating bad SQL.
2020-12-21 17:28:29 -05:00
Evan Miller
f6884cdc01
Merge pull request #93 from ewenmcneill/postgres_namespace_fixes
Postgres: No namespace in INDEX, CONSTRAINT names
2020-12-21 17:01:22 -05:00
Ewen McNeill
c13bcc75a7 Postgres: No namespace in INDEX, CONSTRAINT names
src/libmdb/backend.c:mdb_print_indexes() and
src/libmdb/backend.c:mdb_get_relationships(): In PostgreSQL the INDEX
names explicitly must not have a namespace name on them; they are always
created in the namespace of the table.  See:

http://www.postgresql.org/docs/current/static/sql-createindex.html

which says: "The name of the index to be created. No schema name can be
included here; the index is always created in the same schema as
its parent table."

By observation the same is true for CONSTRAINT names; they are refused
if the namespace is included before them.

Also omit the namespace from the FOREIGN KEY constraint _column_ names
on PostgreSQL (it's not clear that the _column_ names should ever be
namespaced, but behaviour should currently be unchanged for databases
other than PostgreSQL).
2020-12-22 10:34:23 +13:00
Evan Miller
307cc50dc0 Fix Appveyor builds 2020-12-21 16:02:30 -05:00
Evan Miller
cb0ee059b2
Migrate from Travis CI to GitHub Actions (#229)
* Add GitHub Actions workflow

* Consolidate CI test commands into test_script.sh

* Remove Travis build
2020-12-21 15:42:38 -05:00
Evan Miller
8dd10d332e
Merge pull request #228 from evanmiller/no-math
Remove math.h
2020-12-21 15:34:16 -05:00
Evan Miller
25435201b4 Remove math.h 2020-12-21 11:26:45 -05:00
Evan Miller
a2f34b1748
Merge pull request #227 from evanmiller/index-lang
Use the language ID from the DB header for indexing
2020-12-21 09:50:09 -05:00
Evan Miller
3001c3b94f Use the language ID from the DB header for indexing
According to the HACKING file, the file's default language ID is stored
in the database header. Use this value instead of a generic English
language locale for indexing JET4 files.

Columns can have their own text sorting rules, including language ID
distinct from the file's language ID, but this is not addressed as we'd
have to break the mdb_index_hash_text function signature, which I'm not
prepared to do just yet.

There appear to be two bytes after the language ID that may indicate
additional sorting flags. These bytes need additional research.
2020-12-21 09:11:42 -05:00
Evan Miller
ec994b6f43
Merge pull request #225 from evanmiller/gcc-initializers
Use GCC style initializers for MdbFormatConstants
2020-12-20 20:48:38 -05:00
Evan Miller
b8ec7a2ec7 Use GCC style initializers for MdbFormatConstants 2020-12-20 20:15:13 -05:00
Evan Miller
c6f3b2f858
Merge pull request #224 from evanmiller/jet3-encodings
Simplify header-reading logic and support JET3 code pages
2020-12-20 20:12:06 -05:00
Evan Miller
f85905b5c8 Add a simple Latin-1 => UTF-8 transcoder w/o iconv 2020-12-20 19:54:51 -05:00
Evan Miller
134306d1af Simplify header-reading logic and support JET3 code pages
Using the notes and RC4 key provided in the HACKING file, decrypt the
database definition page all at once instead of decrypting individual
fields with ad-hoc keys. Use the newly decrypted header to access the
database code page at offset 0x3C, and use this numeric value to
initialize the iconv converter with an appropriate charset name for
popular windows code pages. More encodings can be added later, with
the eventual goal of getting rid of the MDB_JET3_CHARSET environment
variable.

Note that individual columns can have their own code pages but this
issue is not addressed.

An extra field is added to the MdbFile structure - because this
struct is allocated internally, this should not break the public
ABI.

Finally, only set the db_passwd field if it's a JET3 database (see #144)
2020-12-20 18:02:23 -05:00
Evan Miller
a8414720e4
Use wcstombs when iconv is not present (#223)
Replace the jerry-built UTF-16 => Latin-1 code path with a cross-platform wcstombs solution that emits UTF-8.

This adds an element to the end of the MdbHandle struct, but should not break any existing code.

A run-time option could be added later to emit other encodings, but people who care about such things can just use the iconv code path.
2020-12-20 17:56:33 -05:00
Evan Miller
fb6637c503
Fix unused but set variable warning (#221)
Refactor mdb_unicode2ascii to eliminate warnings
2020-12-19 09:37:39 -05:00
Evan Miller
1b96ef4b0d
Clarify mdb_unicode2ascii API and fix buffer overrun (#220)
There was some confusion as to whether the destination buffer length
should include space for the null terminator. Some callers of the
function assumed that a terminator would be added beyond the end
of the stated buffer size, while others did not. Make everything
consistent and also fix an overrun when there was insufficient
space for the output in the non-iconv implementation.

As stated in a code comment, a better solution would follow the lead
of libxls and use wcstombs and friends when iconv is not available.
But this gets into the weeds with conversion functions named differently
across platforms. The goal here is to fix the buffer overrun.

See oss-fuzz/28773
2020-12-19 08:24:32 -05:00
Evan Miller
7ce75142e8
Merge pull request #219 from evanmiller/oss-fuzz-28790
Fix integer overflow
2020-12-18 19:51:59 -05:00
Evan Miller
50c9bdfee6
Fix buffer overflow (#218)
See oss-fuzz/28787
2020-12-18 19:42:11 -05:00
Evan Miller
78bbf4250e
Merge pull request #217 from evanmiller/oss-fuzz-28780
Fix stack overflow
2020-12-18 16:35:48 -05:00
Evan Miller
3d2d534304
Merge pull request #216 from evanmiller/oss-fuzz-28779
Null-terminate binary strings
2020-12-18 16:33:54 -05:00
Evan Miller
16d249748a Fix integer overflow
See oss-fuzz/28790
2020-12-18 11:22:52 -05:00
Evan Miller
89007cba18 Fix stack overflow
See oss-fuzz/28780
2020-12-18 09:35:12 -05:00
Evan Miller
a1cda27a58 Null-terminate binary strings
See oss-fuzz/28779
2020-12-18 09:26:28 -05:00
Evan Miller
c46c8b0e4d Version 0.9.0, final 2020-12-17 14:03:05 -05:00
Evan Miller
c63a62e365 Update configure.ac
* AM_SILENT_RULES has been around for 9 years so just assume it

* dist-zip adds a ZIP archive step to "make dist"
2020-12-17 11:56:51 -05:00
Evan Miller
d70a3977b0 Fix Appveyor link 2020-12-17 11:20:23 -05:00
Evan Miller
ed6f6d08e3 Update CI badges to dev branch 2020-12-17 11:05:37 -05:00
Evan Miller
e7d5125e2b Fix libmdbsql build on Windows 2020-12-17 11:04:54 -05:00
Evan Miller
f6be7a74ef
Merge pull request #213 from mdbtools/nirgal-patch-2
Drop obsolete files from .gitignore
2020-12-13 08:38:10 -05:00
nirgal
bf9fa2417e
Drop obsolete files from .gitignore 2020-12-13 13:27:58 +00:00
Evan Miller
b0902d1a51 Restore GLib detection. Fixes #212 2020-12-13 07:43:52 -05:00
Evan Miller
47c933b8c3 Merge branch 'dev' of github.com:mdbtools/mdbtools into dev 2020-12-13 07:36:52 -05:00
Evan Miller
a19ea4a859
Merge pull request #211 from mdbtools/nirgal-patch-1
Remove obsolete comment
2020-12-13 07:19:16 -05:00
nirgal
cc061732be
Remove obsolete comment 2020-12-13 10:22:17 +00:00
Evan Miller
924ec93ff1 Version 0.9.0, Beta 8 2020-12-04 10:48:37 -05:00
Evan Miller
eac859db6e
Merge pull request #208 from evanmiller/remove-old-docs
Remove old documentation
2020-12-04 10:45:51 -05:00
Evan Miller
057d0fe91c Remove -Wno-portability from CI scripts 2020-12-04 10:07:26 -05:00
Evan Miller
b8cf4f4534 Merge branch 'master' into remove-old-docs 2020-12-04 09:34:04 -05:00