Commit Graph

915 Commits

Author SHA1 Message Date
Evan Miller
6136252a85
Merge pull request #306 from mdbtools/issue-301
Set _XOPEN_SOURCE to 600
2021-05-19 10:09:15 -04:00
Benedikt Reinartz
9401d3cd84 Rename function to mdbi_rc4 to prevent it from being exported 2021-05-19 07:45:43 +02:00
Evan Miller
3e11f6dc26 Set _XOPEN_SOURCE to 600. Fixes #301
Some platforms including RHEL need _XOPEN_SOURCE to be defined as a
particular value. 600 seems to be a popular choice.
2021-05-18 14:01:01 -04:00
Benedikt Reinartz
ee5789ebc7 Review comments 2021-05-18 12:22:51 +02:00
Benedikt Reinartz
5fb273fb60
Fix accidental include 2021-05-17 15:47:59 +02:00
Benedikt Reinartz
89ce71637c Re-encrypt pages on write 2021-05-17 07:27:49 +02:00
Benedikt Reinartz
873c6a027e Extract RC4 code to separate file 2021-05-17 07:21:44 +02:00
Evan Miller
31a075e08b Remove function pointer casts 2021-04-25 11:23:38 -04:00
Benedikt Reinartz
e2b722ed46
Adjust loop callback signatures
`GFunc` is `void (gpointer, gpointer)` and `GHFunc` is `void (gpointer, gpointer, gpointer)`,
so the respective callback functions should have the same signature.
2021-04-25 12:47:33 +02:00
Evan Miller
05bee0c69f Remove unnecessary _XOPEN_SOURCE
This was originally intended to expose strptime, which is no longer
(never?) used  by data.c
2021-04-16 13:04:40 -04:00
Evan Miller
ceb65d6ece Conditionally define _XOPEN_SOURCE
Fixes #298
2021-04-13 07:19:19 -04:00
Evan Miller
fe0175aa63
Migrate to g_memdup2 (#288)
With fakeglib and older versions of GLib, fall back to g_memdup with
a #define inside mdbprivate.h.

Fixes #287
2021-04-05 09:04:29 -04:00
Evan Miller
c494f0d746 SQL: Allow spaces in DB names (remove wordexp.h)
Fixes #292
2021-04-04 22:07:31 -04:00
bob620
b6bf27d6b3 sql: allow double quoted (") database names 2021-04-04 19:42:34 -05:00
Evan Miller
5992a1cc66
Merge pull request #285 from Bob620/issue-283
sql: correctly parse 'inverse' operators
2021-03-25 22:38:09 -04:00
bob620
bd76027e67 sql: correctly parse 'inverse' operators 2021-03-25 20:36:44 -05:00
bob620
5d27e2008d libmdbsql: remove valid character * 2021-03-24 17:58:29 -05:00
bob620
d05c86fa3d libmdbsql: Allow all special characters from valid URIs in paths 2021-03-24 17:50:33 -05:00
Evan Miller
05a1492eef
Merge pull request #280 from mdbtools/issue-275
libmdbsql: Allow dashes in paths
2021-03-24 18:36:09 -04:00
Evan Miller
8c2f8221b5 Allow dashes in paths #275
This is not a complete fix, but should address the immediate reported issue.
2021-03-24 09:57:41 -04:00
Evan Miller
58e4fe281d libmdbsql: Support negative floating point literals
Fixes #274
2021-03-24 09:47:52 -04:00
Evan Miller
d8a81c49a3
Merge pull request #277 from mdbtools/access-2019
Support Access 2019
2021-03-24 09:28:00 -04:00
Ulrich Weber
970023c4e6 fix segfault in SQLGetTypeInfo due pyodbc
dont access pages in mdb_fetch_row when pdata is not initialized.

Happens when a client, e.g. pyodbc, queries for an unsupported type,
e.g. SQL_WVARCHAR, temp_table is empty and further access to it will crash.

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff70fe3df in mdb_fetch_row (table=0xa74610) at data.c:467
467				rows = mdb_get_int16(

Backtrace:
0  0x00007ffff70fe3df in mdb_fetch_row (table=0xa74610) at data.c:467
1  0x00007ffff77f8746 in SQLFetch (hstmt=0xa70500) at odbc.c:1074
2  0x00007ffff7729b43 in SQLFetch () from /lib/x86_64-linux-gnu/libodbc.so.2
3  0x00007ffff778d545 in GetColumnSize (cnxn=0x7ffff77eb1f0, cnxn=0x7ffff77eb1f0, psize=0x7ffff77bde00, sqltype=-9) at src/cnxninfo.cpp:81
4  CnxnInfo_New (cnxn=0x7ffff77eb1f0) at src/cnxninfo.cpp:145

Signed-off-by: Ulrich Weber <ulrich.weber@gmail.com>
2021-03-24 13:09:48 +00:00
Evan Miller
8f1f080e3f Support Access 2019
Per #260 I am assuming that the internal version 6 refers to files
created with Access 2019. I can't find any documentation on this format,
so I am calling it ACE17. Testing welcome.
2021-03-23 15:56:39 -04:00
HenriHakonen
d8a0d279e4
Update write.c
This way fwrite returns length. mdb_crack_row takes size instead of end.
2021-03-23 17:17:35 +02:00
Evan Miller
735351d0cb Fix signed-unsigned comparison
Fixes #269
2021-03-15 17:32:47 -04:00
Evan Miller
ad8c80892b Fix compilation error 2021-03-07 14:36:07 -05:00
Evan Miller
46a65b9789 Fix warning when reading binary properties
Also fix some type-size issues in mdb_col_to_string.

See #262
2021-03-07 09:03:39 -05:00
Evan Miller
1464882931 mdb-tables: Support --version flag 2021-02-22 09:24:06 -05:00
James Woodcock
2be45a3a0b Implement MySQL relations for schema exports 2021-02-16 19:39:00 +00:00
James Woodcock
8bf8806d4f Implement a MySQL serial type for schema exports 2021-02-16 19:32:27 +00:00
Evan Miller
1bfce353d4 Move mdb_col_to_string warning 2021-02-15 21:25:53 -05:00
Evan Miller
e655cba907 Fix handling of numeric types in ODBC driver
Fixes #255 and supersedes #256
2021-02-15 19:50:15 -05:00
kalpha2
25c39f38d0
Update write.c
added table name and column number to fprintf when invalid data location detected in mdb_crack_row
2021-02-10 15:33:33 +00:00
James Woodcock
a980d73447
mdb-export: handle MySQL blobs (#250)
* Refactor code so BLOBs are always correctly exported

Previously, BLOBs weren't exported from mdb-export correctly if the
backend had MDB_SHEXP_BULK_INSERT set.

* Export MySQL BLOBs correctly

MySQL BLOBs should be in the form 0x[hex values] when inserting them
with the mysql command line tool.

* MySQL needs a BLOB to store exported MDB_OLE values

MDB_OLE size always comes out as 256 bytes, but varbinary(256) is insufficient
to hold all possible OLE data.
2021-02-03 14:48:56 -05:00
Evan Miller
763716ecc6 Fix unused function warning without iconv 2021-02-02 18:40:40 -05:00
Evan Miller
4e969425ac Add (fake) g_unichar_to_utf8 2021-01-22 07:45:47 -05:00
Evan Miller
da80fb3430 Make mdb_iconv_name_from_code_page static 2021-01-21 23:25:46 -05:00
Evan Miller
468502bc87 Terminate string 2021-01-21 23:16:33 -05:00
Evan Miller
0aa3aeee42 Simplify (fake) g_locale_to_utf8
Use mbstowcs and a manual UTF-8 conversion so we don't have to sniff
the locale and require iconv.
2021-01-21 23:08:55 -05:00
Evan Miller
f1eac042b5 Fix misuse of "%*s" in sprintf strings
%*s takes the output length, not the input length. The intended
specifier was %.*s in several places. Bug(s) introduced in
2bb31f05ee
2021-01-21 18:27:20 -05:00
Evan Miller
70c1b66278
Use correct bind types for SQLBindCol / SQLFetch (#242)
SQLFetch / SQLExtendedFetch now skip the mdb_sql machinery and use
SQLGetData on their bound columns instead. We rely on mdb_fetch_row
to skip to the correct page without any bindings and then SQLGetData will
do the rest.

SQLFetch will now correctly return SQL_SUCCESS_WITH_INFO if one or more
 bound columns have their data truncated, and will return several kinds of errors
(provided by SQLGetData) that were previously ignored.

Updated the unit test with a SQL_C_LONG type for demonstration purposes.

Fixes #23
2021-01-20 09:00:48 -05:00
Evan Miller
615b625d79 Let LC_COLLATE influence string-comparison operations
By default this will be set to the C locale, but set it to the user's
locale when string comparisons are performed from mdb-sql. Note that
this can be overridden with the LC_COLLATE environment variable.

We could infer the collation locale from the file itself, but this will
likely require a big ball of glue between the Windows locales and Unix
ones.
2021-01-19 21:24:31 -05:00
Evan Miller
f99c5539e7 Add --version option to the CLI tools
See #232
2021-01-19 20:37:25 -05:00
Evan Miller
9e85bc4153 Clean up backend export logic
* Differentiate character lengths from byte lengths (see #112)

* Use GNU-style indexed initializers for clarity

* Remove needs_quotes since it's not used anywhere
2021-01-19 18:03:10 -05:00
Evan Miller
8c91654426 Man page and usage updates
* MDBOPTS=no_memo is not used anywhere; mark deprecated and print a
  warning if enabled

* Mark MDBOPTS=use_index as experimental in the man pages

* MDBOPTS need to be colon separated

* Document new long forms of mdb-queries options
2021-01-19 16:27:36 -05:00
Evan Miller
0aa88f85d5 Support scale/precision with more column types 2021-01-19 15:55:57 -05:00
Evan Miller
aec667a033 Fix numeric scale/precision on Jet3 databases 2021-01-19 15:23:28 -05:00
Evan Miller
d089c4072d More locale-awareness for command line arguments 2021-01-18 18:15:30 -05:00
Evan Miller
1e35bddc62 Migrate mdb-queries over to the GLib machinery
This buys us an auto-generated usage string and locale-awareness for the
query name. Short option names are preserved and long names are added.
2021-01-18 17:45:24 -05:00