[med-svn] [Git][med-team/theseus][master] 2 commits: fix issues uncovered by gcc 8

Fabian Klötzl gitlab at salsa.debian.org
Mon Sep 10 11:43:20 BST 2018


Fabian Klötzl pushed to branch master at Debian Med / theseus


Commits:
d3c09ec3 by Fabian Klötzl at 2018-09-10T10:38:15Z
fix issues uncovered by gcc 8

- - - - -
bbe22ea9 by Fabian Klötzl at 2018-09-10T10:38:53Z
create lib directory during build

- - - - -


4 changed files:

- debian/changelog
- + debian/patches/0003-fix-issues-uncovered-by-gcc8.patch
- + debian/patches/0004-create-lib-dir.patch
- debian/patches/series


Changes:

=====================================
debian/changelog
=====================================
@@ -1,3 +1,11 @@
+theseus (3.3.0-7) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix string bugs uncovered by gcc8
+    Closes: #908459
+
+ -- Fabian Kloetzl <kloetzl at evolbio.mpg.de>  Mon, 10 Sep 2018 09:56:01 +0000
+
 theseus (3.3.0-6) unstable; urgency=medium
 
   * Move packaging from SVN to Git


=====================================
debian/patches/0003-fix-issues-uncovered-by-gcc8.patch
=====================================
@@ -0,0 +1,507 @@
+From: =?utf-8?q?Fabian_Kl=C3=B6tzl?= <fabian at kloetzl.info>
+Date: Mon, 10 Sep 2018 07:51:18 +0000
+Subject: fix issues uncovered by gcc8
+
+---
+ MultiPose2MSA.c        | 17 ++++++++---------
+ PCAstats.c             |  4 ++--
+ RandCds.c              | 11 +++++------
+ StructAlign.c          |  2 +-
+ libDLTutils/DLTutils.c |  4 ++--
+ libmsa/msa.c           |  8 ++++----
+ make.inc               |  2 +-
+ pdbIO.c                | 44 ++++++++++++++++++--------------------------
+ pdbMalloc.c            |  2 +-
+ pdbUtils.c             | 18 ++++++++----------
+ theseus.c              | 15 +++++++--------
+ 11 files changed, 57 insertions(+), 70 deletions(-)
+
+diff --git a/MultiPose2MSA.c b/MultiPose2MSA.c
+index 47f93dc..2cc4442 100644
+--- a/MultiPose2MSA.c
++++ b/MultiPose2MSA.c
+@@ -178,7 +178,7 @@ Align2segID(PDBCdsArray *pdbA)
+ 
+                 while(cdsi->resSeq[k] == resSeq)
+                 {
+-                    strncpy(cdsi->segID[k], alnindex, 4);
++                    strcpy(cdsi->segID[k], alnindex);
+                     //printf("\n%s %4d %4d %s %4d %c %5d", cdsi->segID[k], i, k, alnindex, resSeq, seq[j], cdsi->vlen);
+                     //fflush(NULL);
+ 
+@@ -635,7 +635,7 @@ GetCdsFrAlignment(PDBCdsArray *pdbA, CdsArray *baseA,
+                 {
+                     if (msa->seq[k][p] != '-') /* not a gap */
+                     {
+-                        strncpy(cdsj->resName[n], pdbj->resName[m], 3);
++                        strcpy(cdsj->resName[n], pdbj->resName[m]); // possibly problematic
+                         cdsj->chainID[n] = pdbj->chainID[m];
+                         cdsj->resSeq[n]  = pdbj->resSeq[m];
+                         cdsj->x[n]       = pdbj->x[m];
+@@ -650,7 +650,7 @@ GetCdsFrAlignment(PDBCdsArray *pdbA, CdsArray *baseA,
+                     }
+                     else /* is a gap */
+                     {
+-                        strncpy(cdsj->resName[n], "GAP", 3);
++                        strcpy(cdsj->resName[n], "GAP");
+                         cdsj->chainID[n] = pdbj->chainID[m];
+                         cdsj->resSeq[n]  = 0;
+                         cdsj->x[n]       = 0.0;
+@@ -696,7 +696,7 @@ GetCdsFrAlignment(PDBCdsArray *pdbA, CdsArray *baseA,
+ 
+             for (q = n; q < vlen; ++q)
+             {
+-                strncpy(cdsj->resName[q], "GAP", 3);
++                strcpy(cdsj->resName[q], "GAP");
+                 cdsj->chainID[q] = pdbj->chainID[m-1];
+                 cdsj->resSeq[q]  = 0;
+                 cdsj->x[q]       = 0.0;
+@@ -912,7 +912,7 @@ Align2MSA_singletons(PDBCdsArray *pdbA, CdsArray *baseA, MSA *msa)
+     }
+ 
+     for (i = 0; i < cnum; ++i)
+-        strncpy(baseA->cds[i]->filename, pdbA->cds[i]->filename, FILENAME_MAX - 1);
++        snprintf(baseA->cds[i]->filename, FILENAME_MAX, "%s", pdbA->cds[i]->filename);
+ 
+     VerifyAlignmentVsPDBs(pdbA, baseA, msa, algo->atoms, pdbA->seq2pdb->map);
+     GetCdsFrAlignment(pdbA, baseA, pdbA->seq2pdb, msa, vlen, alnlen, pdbA->seq2pdb->singletons);
+@@ -971,7 +971,7 @@ Align2MSA_crush(PDBCdsArray *pdbA, CdsArray *baseA, MSA *msa)
+     }
+ 
+     for (i = 0; i < cnum; ++i)
+-        strncpy(baseA->cds[i]->filename, pdbA->cds[i]->filename, FILENAME_MAX - 1);
++        snprintf(baseA->cds[i]->filename, FILENAME_MAX, "%s", pdbA->cds[i]->filename);
+ 
+     VerifyAlignmentVsPDBs(pdbA, baseA, msa, algo->atoms, pdbA->seq2pdb->map);
+     GetCdsFrAlignment(pdbA, baseA, pdbA->seq2pdb, msa, vlen, alnlen, pdbA->seq2pdb->singletons);
+@@ -1041,7 +1041,7 @@ Align2MSA(PDBCdsArray *pdbA, CdsArray *baseA, char *msafile_name, char *mapfile_
+     }
+ 
+     for (i = 0; i < cnum; ++i)
+-        strncpy(baseA->cds[i]->filename, pdbA->cds[i]->filename, FILENAME_MAX - 1);
++        snprintf(baseA->cds[i]->filename, FILENAME_MAX, "%s", pdbA->cds[i]->filename);
+ 
+     VerifyAlignmentVsPDBs(pdbA, baseA, msa, algo->atoms, pdbA->seq2pdb->map);
+     GetCdsFrAlignment(pdbA, baseA, pdbA->seq2pdb, msa, vlen, alnlen, pdbA->seq2pdb->singletons);
+@@ -1107,8 +1107,7 @@ pdb2fst(PDBCdsArray *pdbA)
+     for (i = 0; i < pdbA->cnum; ++i)
+     {
+         pdbi = (const PDBCds *) pdbA->cds[i];
+-        strncpy(outfile, pdbi->filename, strlen(pdbi->filename)+1);
+-        strncat(outfile, ".fst", 4);
++        snprintf(outfile, FILENAME_MAX, "%.*s.fst", (int)FILENAME_MAX - 5, pdbi->filename);
+ 
+         fp = fopen(outfile, "w");
+ 
+diff --git a/PCAstats.c b/PCAstats.c
+index 41114ea..912574f 100644
+--- a/PCAstats.c
++++ b/PCAstats.c
+@@ -428,7 +428,7 @@ WritePCAFile(PDBCdsArray *parray, CdsArray *cdsA, const char *outfile_root)
+         }
+ 
+         if (algo->cormat == 0)
+-            strncpy(covcor_str, "covariance", 10);
++            memcpy(covcor_str, "covariance", 11);
+ 
+         fprintf(pdbfile, "REMARK ===-===-===-===-===-===-===-===-===-===-===-===-===-===-===-===-===-===-=\n");
+         fprintf(pdbfile, "REMARK + File made by Douglas Theobald's THESEUS program\n");
+@@ -551,7 +551,7 @@ CalcFullCovMat(cdsA);
+         }
+ 
+         if (algo->cormat == 0)
+-            strncpy(covcor_str, "covariance", 10);
++            memcpy(covcor_str, "covariance", 11);
+ 
+         fprintf(pdbfile, "REMARK ===-===-===-===-===-===-===-===-===-===-===-===-===-===-===-===-===-===-=\n");
+         fprintf(pdbfile, "REMARK + File made by Douglas Theobald's THESEUS program \n");
+diff --git a/RandCds.c b/RandCds.c
+index cb0bdac..3f77cb2 100644
+--- a/RandCds.c
++++ b/RandCds.c
+@@ -735,14 +735,13 @@ PDBCdsArray
+     PDBCdsArray      *pdbA = NULL;
+ 
+     if (getenv("PDBDIR"))
+-        strncpy(pdbdir, getenv("PDBDIR"), FILENAME_MAX);
++        snprintf(pdbdir, FILENAME_MAX, "%.*s", (int)FILENAME_MAX - 1, getenv("PDBDIR"));
+ 
+     /* count atoms in first model and allocate */
+     pdbfile = fopen(pdbfile_name, "r");
+     if (pdbfile == NULL)
+     {
+-        strncpy(dirpdbfile_name, pdbdir, FILENAME_MAX - 1);
+-        strncat(dirpdbfile_name, pdbfile_name, FILENAME_MAX - strlen(pdbfile_name) - 1);
++        snprintf(dirpdbfile_name, FILENAME_MAX, "%s/%s", pdbdir, pdbfile_name);
+ 
+         pdbfile = fopen(dirpdbfile_name, "r");
+ 
+@@ -818,12 +817,12 @@ PDBCdsArray
+     for (i = 0; i < vlen; ++i)
+     {
+                                                /* #  COLs  LEN  DATA TYPE    FIELD      DEFINITION */
+-        strncpy(cds->record[i], "ATOM  ", 6);  /* 1  0-5   6    Record name  "ATOM  "              */
++        strncpy(cds->record[i], "ATOM  ", 7);  /* 1  0-5   6    Record name  "ATOM  "              */
+         cds->serial[i] = i + 1;                /* 2  6-10  5    Integer      serial     Atom serial number. */
+-        strncpy(cds->name[i], "CA ", 3);       /* 4  13-15 4(3) Atom         name       Atom name. */
++        strncpy(cds->name[i], "CA ", 4);       /* 4  13-15 4(3) Atom         name       Atom name. */
+         cds->Hnum[i] = ' ';                    /* 3  15    1      hydrogen number, (!official). */
+         cds->altLoc[i] = ' ';                  /* 5  16    1    Character    altLoc     Alternate location indicator. */
+-        strncpy(cds->resName[i], "ALA", 3);       /* 6  17-19 3    Residue name resName    Residue name. */
++        strncpy(cds->resName[i], "ALA", 4);       /* 6  17-19 3    Residue name resName    Residue name. */
+         cds->xchainID[i] = ' ';                /* 7  20    1    Character    xchainID   Chain identifier (!official). */
+         cds->chainID[i] = 'A';                 /* 8  21    1    Character    chainID    Chain identifier. */
+         cds->resSeq[i] = i + 1;                /* 9  22-25 4    Integer      resSeq     Residue sequence number. */
+diff --git a/StructAlign.c b/StructAlign.c
+index 7a32c12..9d4f234 100644
+--- a/StructAlign.c
++++ b/StructAlign.c
+@@ -378,7 +378,7 @@ StructAlign(PDBCdsArray *pdbA, int iCommon, CdsArray *cdsA, NWtable **nwTableA)
+             jj -= 4; // To get rid of the filename extension
+ 
+         fNamePt1[jj] = 0;
+-        sprintf(fNamePt2, "%s_%s", fNamePt1, nwti->msa->name[1]);
++        snprintf(fNamePt2, FILENAME_MAX, "%s_%s", fNamePt1, nwti->msa->name[1]);
+         jj = strlen(fNamePt2);
+ 
+         if (jj >= FILENAME_MAX)
+diff --git a/libDLTutils/DLTutils.c b/libDLTutils/DLTutils.c
+index af51a61..f60c657 100644
+--- a/libDLTutils/DLTutils.c
++++ b/libDLTutils/DLTutils.c
+@@ -156,7 +156,7 @@ char
+     size_t         len = strlen(s2); /* minimum allocated length of s2 */
+     len = MYMIN(n, len);
+ 
+-    strncpy(s1, s2, len);
++    memcpy(s1, s2, len);
+     s1[len] = '\0';
+ 
+     return(s1);
+@@ -170,7 +170,7 @@ char
+ {
+     size_t          len = strlen(s2);
+ 
+-    strncpy(s1, s2, len);
++    memcpy(s1, s2, len);
+     s1[len] = '\0';
+ 
+     return(s1);
+diff --git a/libmsa/msa.c b/libmsa/msa.c
+index 867aa8a..3be8ad7 100644
+--- a/libmsa/msa.c
++++ b/libmsa/msa.c
+@@ -953,10 +953,10 @@ MSAcombine2(MSAA *msaa, int msa1_i, int msa2_i, int seq1_i, int seq2_i, int msao
+ 
+     /* copy the names over */
+     for (m = 0; m < num1; ++m)
+-        strncpy(msao->name[m], msa1->name[m], strlen(msa1->name[m])+1);
++        strcpy(msao->name[m], msa1->name[m]);
+ 
+     for (m = 0; m < num2; ++m)
+-        strncpy(msao->name[m + num1], msa2->name[m], strlen(msa2->name[m])+1);
++        strcpy(msao->name[m + num1], msa2->name[m]);
+ 
+     i = j = k = 0;
+ 
+@@ -1107,7 +1107,7 @@ reada2m(char *msafile_name, MSA *msa)
+         exit(EXIT_FAILURE);
+     }
+ 
+-    strncpy(msa->filename, msafile_name, strlen(msafile_name));
++    strcpy(msa->filename, msafile_name);
+ 
+     /* get the number of sequences in the a2m file  */
+     msa->allocnum = 0;
+@@ -1294,7 +1294,7 @@ readaln(char *msafile_name, MSA *msa)
+     }
+     rewind(msafile);
+ 
+-    strncpy(msa->filename, msafile_name, strlen(msafile_name));
++    strcpy(msa->filename, msafile_name);
+ 
+     /* get the number of sequences in the aln file */
+     /* first skip "CLUSTAL" header line */
+diff --git a/make.inc b/make.inc
+index 54192dc..06bbfe9 100644
+--- a/make.inc
++++ b/make.inc
+@@ -81,7 +81,7 @@ CC = /usr/bin/gcc
+ OPT = -O3 -ffast-math -fstrict-aliasing -funroll-loops -fomit-frame-pointer
+ ## OPT = -m64 -O3 -march=native -funroll-loops -ffast-math -mfpmath=sse
+ #OPT = -O0 -ggdb
+-WARN = -Wall -Werror -pedantic -std=c99 -Wno-unused-result
++WARN = -Wall -Werror -pedantic -std=c99 -Wno-unused-result -Wformat-truncation=0
+ CFLAGS = $(WARN) -pthread
+ #CC = /usr/local/bin/gcc
+ 
+diff --git a/pdbIO.c b/pdbIO.c
+index 7332f16..64f5ce9 100644
+--- a/pdbIO.c
++++ b/pdbIO.c
+@@ -370,7 +370,7 @@ ReadPDBCds(char *pdbfile_name, PDBCdsArray *pdbA, int cds_i, int modelnum, int a
+     char           *buff = NULL;
+     int             i, j, pos;
+     FILE           *pdbfile = NULL;
+-    char            pdbdir[FILENAME_MAX], dirpdbfile_name[FILENAME_MAX];
++    char            dirpdbfile_name[FILENAME_MAX];
+     PDBCds        **cds = pdbA->cds;
+     PDBCds         *cp = NULL;
+ 
+@@ -391,9 +391,7 @@ ReadPDBCds(char *pdbfile_name, PDBCdsArray *pdbA, int cds_i, int modelnum, int a
+     {
+         if (getenv("PDBDIR"))
+         {
+-            strncpy(pdbdir, getenv("PDBDIR"), FILENAME_MAX);
+-            strncpy(dirpdbfile_name, pdbdir, FILENAME_MAX - 1);
+-            strncat(dirpdbfile_name, pdbfile_name, FILENAME_MAX - strlen(pdbfile_name) - 1);
++            snprintf(dirpdbfile_name, FILENAME_MAX, "%s/%s", getenv("PDBDIR"), pdbfile_name);
+ 
+             pdbfile = fopen(dirpdbfile_name, "r");
+         }
+@@ -476,12 +474,12 @@ ScanTPSLine(char *buff, PDBCds *cp, int j)
+ //     if (endline) /* kill the newline, if there */
+ //         *endline = '\0';
+ 
+-    strncpy(cp->record[j], "ATOM  ", 6);
++    strncpy(cp->record[j], "ATOM  ", 7);
+     cp->serial[j] = j;
+     cp->Hnum[j] = ' ';
+-    strncpy(cp->name[j], "CA ", 3);
++    strncpy(cp->name[j], "CA ", 4);
+     cp->altLoc[j] = ' ';
+-    strncpy(cp->resName[j], "LM ", 3);
++    strncpy(cp->resName[j], "LM ", 4);
+     cp->xchainID[j] = ' ';
+     cp->chainID[j] = 'A';
+     cp->resSeq[j] = j;
+@@ -489,9 +487,9 @@ ScanTPSLine(char *buff, PDBCds *cp, int j)
+     numret = sscanf(buff, "%lf%lf%lf", &cp->x[j], &cp->y[j], &cp->z[j]);
+     cp->occupancy[j] = 1.0;
+     cp->tempFactor[j] = 1.0;
+-    strncpy(cp->segID[j], "    ", 4);
+-    strncpy(cp->element[j], "  ", 2);
+-    strncpy(cp->charge[j], "  ", 2);
++    strncpy(cp->segID[j], "    ", 5);
++    strncpy(cp->element[j], "  ", 3);
++    strncpy(cp->charge[j], "  ", 3);
+     cp->nu[j] = 1;
+ 
+     return(numret);
+@@ -506,7 +504,7 @@ ReadTPSCds(char *pdbfile_name, PDBCdsArray *pdbA, int cds_i, int modelnum)
+     char           *buff = NULL;
+     int             i, j, pos, numret;
+     FILE           *pdbfile = NULL;
+-    char            pdbdir[FILENAME_MAX], dirpdbfile_name[FILENAME_MAX];
++    char            dirpdbfile_name[FILENAME_MAX];
+     PDBCds        **cds = pdbA->cds;
+     PDBCds         *cp = NULL;
+ 
+@@ -527,9 +525,7 @@ ReadTPSCds(char *pdbfile_name, PDBCdsArray *pdbA, int cds_i, int modelnum)
+     {
+         if (getenv("PDBDIR"))
+         {
+-            strncpy(pdbdir, getenv("PDBDIR"), FILENAME_MAX);
+-            strncpy(dirpdbfile_name, pdbdir, FILENAME_MAX - 1);
+-            strncat(dirpdbfile_name, pdbfile_name, FILENAME_MAX - strlen(pdbfile_name) - 1);
++            snprintf(dirpdbfile_name, FILENAME_MAX, "%s/%s", getenv("PDBDIR"), pdbfile_name);
+ 
+             pdbfile = fopen(dirpdbfile_name, "r");
+         }
+@@ -619,7 +615,7 @@ PDBCdsArray
+     PDBCdsArray         *pdbA = NULL;
+ 
+     if (getenv("PDBDIR"))
+-        strncpy(pdbdir, getenv("PDBDIR"), FILENAME_MAX);
++        snprintf(pdbdir, FILENAME_MAX, "%.*s", (int)FILENAME_MAX - 1, getenv("PDBDIR"));
+ 
+     vlen = last_vlen = 0;
+ 
+@@ -643,8 +639,7 @@ PDBCdsArray
+         tpsfile = fopen(tpsfile_name, "r");
+         if (tpsfile == NULL)
+         {
+-            strncpy(dirtpsfile_name, pdbdir, FILENAME_MAX - 1);
+-            strncat(dirtpsfile_name, tpsfile_name, FILENAME_MAX - strlen(tpsfile_name) - 1);
++            snprintf(dirtpsfile_name, FILENAME_MAX, "%s/%s", pdbdir, tpsfile_name);
+ 
+             tpsfile = fopen(dirtpsfile_name, "r");
+ 
+@@ -991,11 +986,11 @@ GetCdsSelection(CdsArray *baseA, PDBCdsArray *pdbA)
+             vlen = GetSlxnLen(pdbA, j, algo, chains, lower, upper, range_num, selection_index, 0);
+ 
+         baseA->cds[j]->model = pdbA->cds[j]->model;
+-        strncpy(baseA->cds[j]->filename, pdbA->cds[j]->filename, FILENAME_MAX - 1);
++        snprintf(baseA->cds[j]->filename, FILENAME_MAX, "%.*s", (int)FILENAME_MAX - 1, pdbA->cds[j]->filename);
+ 
+         for (i = 0; i < baseA->vlen; ++i)
+         {
+-            strncpy(baseA->cds[j]->resName[i], pdbA->cds[j]->resName[selection_index[i]], 3);
++            strncpy(baseA->cds[j]->resName[i], pdbA->cds[j]->resName[selection_index[i]], 4);
+             baseA->cds[j]->chainID[i] = pdbA->cds[j]->chainID[selection_index[i]];
+             baseA->cds[j]->resSeq[i] = pdbA->cds[j]->resSeq[selection_index[i]];
+             baseA->cds[j]->x[i]      = pdbA->cds[j]->x[selection_index[i]];
+@@ -1035,7 +1030,7 @@ PDBCdsArray
+     PDBCdsArray      *pdbA = NULL;
+ 
+     if (getenv("PDBDIR"))
+-        strncpy(pdbdir, getenv("PDBDIR"), FILENAME_MAX);
++        snprintf(pdbdir, FILENAME_MAX, "%.*s", (int)FILENAME_MAX - 1, getenv("PDBDIR"));
+ 
+     vlen = last_vlen = 0;
+ 
+@@ -1059,8 +1054,7 @@ PDBCdsArray
+         pdbfile = fopen(pdbfile_name, "r");
+         if (pdbfile == NULL)
+         {
+-            strncpy(dirpdbfile_name, pdbdir, FILENAME_MAX - 1);
+-            strncat(dirpdbfile_name, pdbfile_name, FILENAME_MAX - strlen(pdbfile_name) - 1);
++            snprintf(dirpdbfile_name, FILENAME_MAX, "%s/%s", pdbdir, pdbfile_name);
+ 
+             pdbfile = fopen(dirpdbfile_name, "r");
+ 
+@@ -1419,7 +1413,7 @@ char
+     for (ii = 0; ii < myPDBs->cnum; ++ii)
+     {
+         tmpLen = strlen(myPDBs->cds[ii]->filename);
+-        strncpy(tmpStr, myPDBs->cds[ii]->filename, (tmpLen + 1) * sizeof(char));
++        memcpy(tmpStr, myPDBs->cds[ii]->filename, (tmpLen + 1) * sizeof(char));
+         tmpLen--;
+         while (tmpLen)
+         {
+@@ -1715,9 +1709,7 @@ WriteTheseusPDBFiles(PDBCdsArray *pdbA, Algorithm *algo, Statistics *stats, char
+ 
+     for (i = 0; i < pdbA->cnum; ++i)
+     {
+-        strncpy(outfile_name, fname, strlen(fname)+1);
+-        strcat(outfile_name, "_");
+-        strncat(outfile_name, pdbA->cds[i]->filename, strlen(pdbA->cds[i]->filename)+1);
++        (void)snprintf(outfile_name, FILENAME_MAX, "%s_%s", fname, pdbA->cds[i]->filename);
+         //strcpy(outfile_name, getroot(pdbA->cds[i]->filename));
+         //strcat(outfile_name, "_ths.pdb");
+ 
+diff --git a/pdbMalloc.c b/pdbMalloc.c
+index d750d94..4d0ccbf 100644
+--- a/pdbMalloc.c
++++ b/pdbMalloc.c
+@@ -301,7 +301,7 @@ CdsArray
+         exit(EXIT_FAILURE);
+     }
+ 
+-    strncpy(cdsA->outfile_name, "theseus.pdb", 11);
++    strncpy(cdsA->outfile_name, "theseus.pdb", 12);
+     cdsA->anchorf_name = NULL;
+     cdsA->mapfile_name = NULL;
+     cdsA->msafile_name = NULL;
+diff --git a/pdbUtils.c b/pdbUtils.c
+index 781c77c..bf11b7f 100644
+--- a/pdbUtils.c
++++ b/pdbUtils.c
+@@ -51,7 +51,7 @@ CdsCopyXYZ(Cds *cds1, const Cds *cds2) // DLT FIX MAT COORDS
+ void
+ CdsCopy(Cds *cds1, const Cds *cds2) // DLT FIX MAT COORDS
+ {
+-    strncpy(cds1->filename, cds2->filename, FILENAME_MAX-1);
++    memcpy(cds1->filename, cds2->filename, FILENAME_MAX);
+     memcpy(cds1->resSeq, cds2->resSeq, cds2->vlen * sizeof(int));
+     memcpy(cds1->x, cds2->x, cds2->vlen * sizeof(double));
+     memcpy(cds1->y, cds2->y, cds2->vlen * sizeof(double));
+@@ -89,7 +89,7 @@ CdsCopyAll(Cds *cds1, const Cds *cds2) // DLT FIX MAT COORDS --- did it
+     cds1->aalen = cds2->aalen;
+     cds1->model  = cds2->model;
+ 
+-    strncpy(cds1->filename, cds2->filename, FILENAME_MAX - 1);
++    memcpy(cds1->filename, cds2->filename, FILENAME_MAX);
+ 
+     memcpy(cds1->resName_space, cds2->resName_space, vlen * 4 * sizeof(char));
+     memcpy(cds1->chainID, cds2->chainID, vlen * sizeof(char));
+@@ -122,7 +122,7 @@ PDBCdsCopyAll(PDBCds *cds1, const PDBCds *cds2)
+     const int       vlen = cds1->vlen = cds2->vlen;
+ 
+     cds1->model  = cds2->model;
+-    strncpy(cds1->filename, cds2->filename, FILENAME_MAX-1);
++    memcpy(cds1->filename, cds2->filename, FILENAME_MAX);
+ 
+     memcpy(cds1->record_space, cds2->record_space, vlen * 8 * sizeof(char));
+     memcpy(cds1->name_space, cds2->name_space, vlen * 4 * sizeof(char));
+@@ -201,7 +201,6 @@ void
+ FillSegIDWithResSeq(PDBCds *cds_to, const Cds *cds_from)
+ {
+     int             i, rn;
+-    char            resnum[5] ;
+ 
+     for (i = 0; i < cds_to->vlen; ++i)
+     {
+@@ -209,8 +208,7 @@ FillSegIDWithResSeq(PDBCds *cds_to, const Cds *cds_from)
+ 
+          if (rn != 0)
+          {
+-             sprintf(resnum, "%04d", rn);
+-             strncpy(cds_to->segID[i], resnum, 4);
++             sprintf(cds_to->segID[i], "%04d", rn);
+          }
+     }
+ }
+@@ -225,7 +223,7 @@ CopyCds2PDB(PDBCds *pdbcds, const Cds *cds)
+ 
+     pdbcds->vlen = cds->vlen;
+     pdbcds->model = cds->model;
+-    strncpy(pdbcds->filename, cds->filename, FILENAME_MAX-1);
++    memcpy(pdbcds->filename, cds->filename, FILENAME_MAX);
+ 
+     MatCpySqr(pdbcds->matrix, (const double **) cds->matrix, 3);
+ 
+@@ -273,9 +271,9 @@ CopyCds2PDB(PDBCds *pdbcds, const Cds *cds)
+         pdbcds->z[i]          = cds->z[i];
+         pdbcds->occupancy[i]  = cds->o[i];
+         pdbcds->tempFactor[i] = cds->b[i];
+-        strncpy(pdbcds->segID[i], "    ", 4);
+-        strncpy(pdbcds->element[i], "  ", 2);
+-        strncpy(pdbcds->charge[i], "  ", 2);
++        strncpy(pdbcds->segID[i], "    ", 5);
++        strncpy(pdbcds->element[i], "  ", 3);
++        strncpy(pdbcds->charge[i], "  ", 3);
+     }
+ }
+ 
+diff --git a/theseus.c b/theseus.c
+index 5d317ae..819ad43 100644
+--- a/theseus.c
++++ b/theseus.c
+@@ -492,7 +492,7 @@ AlignPairsThenMultiple(PDBCdsArray *myPDBs, char *argv[])
+     sprintf(fNameBuff, "AlignmentOf%d", cnum);
+     //writealn(rtnMSA, 0, rtnMSA->seqlen, fNameBuff);
+     writea2m(rtnMSA, 0, rtnMSA->seqlen, fNameBuff);
+-    strncat(fNameBuff, ".a2m", 4);
++    strncat(fNameBuff, ".a2m", 5);
+     strcpy(rtnMSA->filename, fNameBuff);
+ //#endif
+ 
+@@ -1537,7 +1537,6 @@ ParseCmdLine(int argc, char *argv[])
+     int            option_index = 0;
+     int            i;
+     size_t         cmdlinelen, argvlen;
+-    char           space[] = " ";
+ 
+     /* save the command line, both in parsed form and as a whole string */
+     algo->argc = argc;
+@@ -1550,13 +1549,13 @@ ParseCmdLine(int argc, char *argv[])
+     {
+         algo->argv[i] = NULL;
+         argvlen = strlen(argv[i]);
+-        cmdlinelen += argvlen + 1;
+-        if (cmdlinelen >= 1024)
++        if (cmdlinelen + argvlen + 1 >= 1024)
+             break;
+-        strncat(algo->cmdline, argv[i], argvlen);
+-        strncat(algo->cmdline, space, 1);
+-        algo->argv[i] = calloc((argvlen+1), sizeof(char));
+-        strncpy(algo->argv[i], argv[i], argvlen);
++        // we now know that this fits
++        sprintf(algo->cmdline + cmdlinelen, "%s ", argv[i]);
++        cmdlinelen += argvlen + 1;
++        algo->argv[i] = malloc(argvlen + 1); // strdup is unavailable
++        memcpy(algo->argv[i], argv[i], argvlen + 1);
+     }
+ 
+     char short_options[] = "a:A:b:B:cCd:D:e:EfFg:GhHi:Ij:JlLmM:n:No:Op:P:qQ:r:R:s:S:tT:uUvVWxXyYz:Z0123:4:69";


=====================================
debian/patches/0004-create-lib-dir.patch
=====================================
@@ -0,0 +1,24 @@
+From: =?utf-8?q?Fabian_Kl=C3=B6tzl?= <fabian at kloetzl.info>
+Date: Mon, 10 Sep 2018 10:28:02 +0000
+Subject: create lib dir
+
+---
+ Makefile | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index cb1c708..a3ee651 100644
+--- a/Makefile
++++ b/Makefile
+@@ -17,7 +17,10 @@ termcol.o theseuslib.o
+ 
+ all:				libs ltheseus progs
+ 
+-libs:				ldistfit lDLTutils lmsa ldltmath ldssplite
++libs:				makelibdir ldistfit lDLTutils lmsa ldltmath ldssplite
++
++makelibdir:
++	mkdir -p lib
+ 
+ progs:				theseus libs
+ 


=====================================
debian/patches/series
=====================================
@@ -1,2 +1,4 @@
 30_fix_gcc_options.patch
 gcc-7.patch
+0003-fix-issues-uncovered-by-gcc8.patch
+0004-create-lib-dir.patch



View it on GitLab: https://salsa.debian.org/med-team/theseus/compare/fc973f3ea997f1857ddaec2e4001727b0b301a63...bbe22ea999b2d1933f45d8676876ecab9ffbae5a

-- 
View it on GitLab: https://salsa.debian.org/med-team/theseus/compare/fc973f3ea997f1857ddaec2e4001727b0b301a63...bbe22ea999b2d1933f45d8676876ecab9ffbae5a
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20180910/d86af41f/attachment-0001.html>


More information about the debian-med-commit mailing list