diff --git a/INCHI-1-DOC/CHANGELOG.md b/INCHI-1-DOC/CHANGELOG.md index ba06dc99..563c96bd 100644 --- a/INCHI-1-DOC/CHANGELOG.md +++ b/INCHI-1-DOC/CHANGELOG.md @@ -1,5 +1,16 @@ # Change log +## v1.07.5 2026-02-04 + +### Fixed + +- 127 `Coverity Scan` high and medium impact bugs fixed or addressed +- GHI #189: Exception in libinchi.dll when converting some specific polymer structure +- GHI #165, #164, #161, #160, PR #163, #162 -- initial `Coverity Scan` detections +- `.rc` files to `CMake` build system for metadata +- PR #138: stack buffer overflow in `CleanOrigCoord` +- Several _Google oss-fuzz_ issues + ## v1.07.4 2025-07-03 ### Features @@ -33,7 +44,7 @@ - GHI #71: 32-bit InChI version requiring ibgcc_s_dw2-1.dll on Windows 32-bit platforms (thanks to Norwid Behrnd) a few bugs in the code have been detected and fixed libgcc_s_dw2-1.dll added to INCHI-1-BIN folders - GHI #70: Update license -- Copyright (c) 2024 IUPAC and InChI Trust instead of Copyright (c) 2024 InChI Project -- GHI #67: GetStructFromInchi() now working in v1.07.2 (thanks to Greg Landrum) all variable initializations checked and fixed which caused this issue essential part of InChI tests from now on as all bugs reported by Paul Thiessen/Evan Bolton had the same origin +- GHI #67: GetStructFromInchi() now working in v1.07.2 (thanks to Greg Landrum) all variable initializations checked and fixed which caused this issue essential part of InChI tests from now on as all bugs reported by Paul Thiessen/Evan Bolton had the same origin - GHI #65:changing descriptions in default output for tautomerisms (thanks to Norwid Behrnd) - GHI #58 and #59: 7 bug fixes detected by AFL++ fuzzer (thanks to @skorpion89) - GHI #43: add changes to new version (thanks to Burt Leland) several very important bug fixes related to /InChI2InChI /FixedH /RecMet options @@ -78,7 +89,7 @@ - 33 buffer overflow issues due to use of large array dimensions - 157 security bugs related to improper `NULL` pointer dereferencing which might cause crashes or exits - 71 memory leaks -- 530 potential applications of optional [bounds checking functions](/README.md#BCF) +- 530 potential applications of optional [bounds checking functions](/README.md#BCF) Additionally, 29 potential security issues have been marked for further revision. diff --git a/INCHI-1-DOC/CHANGELOG.pdf b/INCHI-1-DOC/CHANGELOG.pdf index bbd28df7..00376b74 100644 Binary files a/INCHI-1-DOC/CHANGELOG.pdf and b/INCHI-1-DOC/CHANGELOG.pdf differ diff --git a/INCHI-1-DOC/FAQ/doc/inchi-faq.doc b/INCHI-1-DOC/FAQ/doc/inchi-faq.doc index f7bc5f7e..c45f52e0 100644 Binary files a/INCHI-1-DOC/FAQ/doc/inchi-faq.doc and b/INCHI-1-DOC/FAQ/doc/inchi-faq.doc differ diff --git a/INCHI-1-DOC/FAQ/doc/inchi-faq.docx b/INCHI-1-DOC/FAQ/doc/inchi-faq.docx index ca1eb8e3..728aa87d 100644 Binary files a/INCHI-1-DOC/FAQ/doc/inchi-faq.docx and b/INCHI-1-DOC/FAQ/doc/inchi-faq.docx differ diff --git a/INCHI-1-DOC/FAQ/html/inchi-faq.html b/INCHI-1-DOC/FAQ/html/inchi-faq.html index fe692c32..70b30a78 100644 --- a/INCHI-1-DOC/FAQ/html/inchi-faq.html +++ b/INCHI-1-DOC/FAQ/html/inchi-faq.html @@ -143,7 +143,7 @@
Both InChI and InChIKey strings can be used in a web-based query that has high recall and precision.
InChIKey may be more suited for Web searching as it includes no "special symbols" (like slash, plus, etc., which break the query into separate search items), just capital English letters and hyphens ("minus" characters).
- + @@ -549,7 +549,7 @@@@ -558,6 +558,7 @@3.2. Is InChI open?
-It is intended that the source code is freely re-usable and a license has been developed to reflect that. Since the InChI source code has a normative role (i.e. it acts as the final arbiter of the correctness) it is not freely modifiable, although it is open to anybody to view and build an InChI binary.
+It is intended that the source code is freely reusable under the MIT License.
Up to Fall 2011, InChI software was published under the GNU Lesser General Public Licence, LGPL version 2.1.
Since the release 1.04 of the InChI software of Fall 2011, it has been replaced with the more permissive IUPAC/InChI-Trust Licence for the International Chemical Identifier (InChI) Software version 1.04, September 2011 ("IUPAC/InChITrust InChI Licence No. 1.0").
The text of the IUPAC/InChI-Trust Licence may be found here
PDF format / DOC format
(it is also included in the distribution package as the file LICENCE).
Since release 1.07 thee InChI software is released under the MIT License.
@@ -635,7 +636,7 @@Note: The Fixed-H layer is optional (absent in Standard InChI) and can be selected by using the FixedH option of the InChI Software. The Reconnected layer is also optional (absent in Standard InChI) and can be selected by using the RecMet option.
+
While the InChI is divided up into different layers to describe different types of structural information, each of these layers is also split into sub-layers to allow full description of each part of the structure (note: there is no sub-sub-layering).
For instance, the Main layer can be split up into three sub-layers:
@@ -1880,9 +1881,9 @@The stereo interpretation options are:
@@ -1892,7 +1893,7 @@The 'InChI creation' options affect what the InChI algorithm does, not just the structure perception. They modify the defaults specified for Standard InChI and significantly affect the result (e.g., additional InChI layers may appear). Using any of the creation options
diff --git a/INCHI-1-DOC/misc/announce.txt b/INCHI-1-DOC/misc/announce-v105-prerelease.txt similarity index 100% rename from INCHI-1-DOC/misc/announce.txt rename to INCHI-1-DOC/misc/announce-v105-prerelease.txt diff --git a/INCHI-1-SRC/INCHI_API/demos/inchi_main/src/aux2atom.h b/INCHI-1-SRC/INCHI_API/demos/inchi_main/src/aux2atom.h index 2534e0d7..da5960d9 100644 --- a/INCHI-1-SRC/INCHI_API/demos/inchi_main/src/aux2atom.h +++ b/INCHI-1-SRC/INCHI_API/demos/inchi_main/src/aux2atom.h @@ -1490,7 +1490,7 @@ int INChITo_Atom( INCHI_IOSTREAM *inp_molfile, MOL_COORD **szCoord, /* cleanup */ if (num_atoms == INCHI_INP_ERROR_RET || num_atoms == INCHI_INP_FATAL_RET) { - if (atom_stereo0D) /* djb-rwth: fixing coverity CID #500395 */ + if (atom_stereo0D) /* djb-rwth: fixing coverity ID #500395 */ { if (stereo0D && *stereo0D == atom_stereo0D) { @@ -1501,13 +1501,13 @@ int INChITo_Atom( INCHI_IOSTREAM *inp_molfile, MOL_COORD **szCoord, } #if ( defined(TARGET_API_LIB) || defined(TARGET_EXE_USING_API) ) - if (atom) /* djb-rwth: fixing coverity CID #499615 */ + if (atom) /* djb-rwth: fixing coverity ID #499615 */ { inchi_free(atom); atom = NULL; } - if (pszCoord) /* djb-rwth: fixing coverity CID #500397 */ + if (pszCoord) /* djb-rwth: fixing coverity ID #500397 */ { inchi_free(pszCoord); pszCoord = NULL; @@ -2730,7 +2730,7 @@ int INChITo_Atom( INCHI_IOSTREAM *inp_molfile, MOL_COORD **szCoord, /* cleanup */ if (num_atoms == INCHI_INP_ERROR_RET || num_atoms == INCHI_INP_FATAL_RET) { - if (atom_stereo0D) /* djb-rwth: fixing coverity CID #500395 */ + if (atom_stereo0D) /* djb-rwth: fixing coverity ID #500395 */ { if (stereo0D && *stereo0D == atom_stereo0D) { @@ -2740,13 +2740,13 @@ int INChITo_Atom( INCHI_IOSTREAM *inp_molfile, MOL_COORD **szCoord, FreeInchi_Stereo0D(&atom_stereo0D); } - if (atom) /* djb-rwth: fixing coverity CID #499615 */ + if (atom) /* djb-rwth: fixing coverity ID #499615 */ { inchi_free(atom); atom = NULL; } - if (pszCoord) /* djb-rwth: fixing coverity CID #500397 */ + if (pszCoord) /* djb-rwth: fixing coverity ID #500397 */ { inchi_free(pszCoord); pszCoord = NULL; diff --git a/INCHI-1-SRC/INCHI_API/libinchi/src/inchi_dll_a2.c b/INCHI-1-SRC/INCHI_API/libinchi/src/inchi_dll_a2.c index 8fb1c972..52355a15 100644 --- a/INCHI-1-SRC/INCHI_API/libinchi/src/inchi_dll_a2.c +++ b/INCHI-1-SRC/INCHI_API/libinchi/src/inchi_dll_a2.c @@ -2557,7 +2557,7 @@ int FillOutINChIReducedWarn( INChI *pINChI, /* Num(H), Num(-) */ for (j = 0; j < INCHI_T_NUM_MOVABLE; j++) /* djb-rwth: removing redundant code */ pINChI->nTautomer[len++] = t_group->num[j]; - for (j = T_NUM_NO_ISOTOPIC; j < INCHI_T_NUM_MOVABLE; j++) /* djb-rwth: redundant code as the loop is never executed -- discussion required */ /* djb-rwth: ui_rr */ + for (j = T_NUM_NO_ISOTOPIC; j < INCHI_T_NUM_MOVABLE; j++) /* djb-rwth: redundant code as the loop is never executed -- discussion required */ /* djb-rwth: unresolved issue -- revision required */ pINChI->nTautomer[len++] = 0; /* should not happen */ /* tautomeric group endpoint canonical numbers, pre-sorted in ascending order */ for (j = (int) t_group->nFirstEndpointAtNoPos, diff --git a/INCHI-1-SRC/INCHI_API/libinchi/src/inchi_dll_b.c b/INCHI-1-SRC/INCHI_API/libinchi/src/inchi_dll_b.c index 3a1d2645..9354257a 100644 --- a/INCHI-1-SRC/INCHI_API/libinchi/src/inchi_dll_b.c +++ b/INCHI-1-SRC/INCHI_API/libinchi/src/inchi_dll_b.c @@ -1794,7 +1794,7 @@ int InchiToInchiAtom( INCHI_IOSTREAM *inp_file, /* cleanup */ if (num_atoms == INCHI_INP_ERROR_RET || num_atoms == INCHI_INP_FATAL_RET) { - if (atom_stereo0D) /* djb-rwth: fixing coverity CID #500395 */ + if (atom_stereo0D) /* djb-rwth: fixing coverity ID #500395 */ { if (stereo0D && *stereo0D == atom_stereo0D) { @@ -1804,13 +1804,13 @@ int InchiToInchiAtom( INCHI_IOSTREAM *inp_file, FreeInchi_Stereo0D(&atom_stereo0D); } - if (atom) /* djb-rwth: fixing coverity CID #499615 */ + if (atom) /* djb-rwth: fixing coverity ID #499615 */ { inchi_free(atom); atom = NULL; } - if (pszCoord) /* djb-rwth: fixing coverity CID #500397 */ + if (pszCoord) /* djb-rwth: fixing coverity ID #500397 */ { inchi_free(pszCoord); pszCoord = NULL; diff --git a/INCHI-1-SRC/INCHI_BASE/src/bcf_s.c b/INCHI-1-SRC/INCHI_BASE/src/bcf_s.c index 9c0821bf..d026eac2 100644 --- a/INCHI-1-SRC/INCHI_BASE/src/bcf_s.c +++ b/INCHI-1-SRC/INCHI_BASE/src/bcf_s.c @@ -387,7 +387,7 @@ static int dbl2int_g(double dblinp, int fwidth, int ndecpl, char* str) } } else - { + { /* djb-rwth: addressing coverity ID #499558 -- currently leaving this as it is still a part of GHI #100 */ intpl = (long long int)round(dblinp); ret = sprintf(str, "%*lld", fw_real, intpl); /* djb-rwth: ignoring LLVM warning */ return ret; diff --git a/INCHI-1-SRC/INCHI_BASE/src/ichi_bns.c b/INCHI-1-SRC/INCHI_BASE/src/ichi_bns.c index c620c828..04af6d7a 100644 --- a/INCHI-1-SRC/INCHI_BASE/src/ichi_bns.c +++ b/INCHI-1-SRC/INCHI_BASE/src/ichi_bns.c @@ -47,6 +47,7 @@ Normalization related procedures #include16.5. Does the InChI Software ignore stereochemistry if a coordinate-less ("0D") input file in MOL/SDF format is used?
Yes.
-In principle, it would try to recognize tetrahedral stereo expressed through wedge bonds. However, no way exists - to recognize stereochemistry of double bonds in the absence of atomic coordinates, using MOL format. - Therefore, all the stereochemistry is deliberately ignored, as a matter of decision. (Otherwise one would get different +
In principle, it would try to recognize tetrahedral stereo expressed through wedge bonds. However, no way exists + to recognize stereochemistry of double bonds in the absence of atomic coordinates, using MOL format. + Therefore, all the stereochemistry is deliberately ignored, as a matter of decision. (Otherwise one would get different InChI stereo layers for 3D and 0D structures of the same compound.) However, the InChI API library accepts input atom and bond parities, which may be derived by the calling software from, for example, SMILES.