[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