I think there are two aspects then - version numbers should be correct in current modules. I think the bulk of the modules you listed are Xiphos, not CrossWire, but at least one is issued by CrossWire, maybe more. I will fix CrossWire's set.
The other is - wrong version numbers should not crash the engine or produce unreliable/undefined results. Or at least the engine should go down with a decent error message. In essence all places where wrong module conf file entries can cause grief in the engine, I guess some level of sanity checking should happen - Particularly if we want to encourage other publishers to take up offering repositories. Peter > Gesendet: Dienstag, 25. September 2018 um 10:56 Uhr > Von: "Jaak Ristioja" <[email protected]> > An: [email protected] > Betreff: Re: [sword-devel] Module version numbers > > > Aside: Are there any limits to the number of dot separators in the > Version value, or to the number of digits in total or in any part? > > Would SWORD crash with a buffer overflow were it to encounter an > inordinately long Version? > > The relevant code to parse the version string is in the SWVersion > constructor: > > SWVersion::SWVersion(const char *version) { > char *buf = new char[ strlen(version) + 1 ]; > char *tok; > major = minor = minor2 = minor3 = -1; > > strcpy(buf, version); > tok = strtok(buf, "."); > if (tok) > major = atoi(tok); > tok = strtok(0, "."); > if (tok) > minor = atoi(tok); > tok = strtok(0, "."); > if (tok) > minor2 = atoi(tok); > tok = strtok(0, "."); > if (tok) > minor3 = atoi(tok); > delete [] buf; > } > > Very long version strings can only crash it if this runs out of memory. > Other than that, it will just return an incorrect version. There are no > limits to the number of dot separators, but only up to 4 version > components separated by dots are actually parsed. AFAIK, the behavior of > atoi() is undefined for invalid input. On my system, the results are as > follows: > > "9.1" -> 9.1 > "99.1" -> 99.1 > "999.1" -> 999.1 > "9999.1" -> 9999.1 > "99999.1" -> 99999.1 > "999999.1" -> 999999.1 > "9999999.1" -> 9999999.1 > "99999999.1" -> 99999999.1 > "999999999.1" -> 999999999.1 > "9999999999.1" -> 1410065407.1 > "99999999999.1" -> 1215752191.1 > "999999999999.1" -> -727379969.1 > "9999999999999.1" -> 1316134911.1 > "99999999999999.1" -> 276447231.1 > "999999999999999.1" -> -1530494977.1 > "9999999999999999.1" -> 1874919423.1 > "99999999999999999.1" -> 1569325055.1 > "999999999999999999.1" -> -1486618625.1 > "9999999999999999999.1" -> -1.1 > "99999999999999999999.1" -> -1.1 > > > J > > On 25.09.2018 12:03, David Haslam wrote: > > Ignoring the spurious SwordVersion hit, it seems that the string after the > > dash is a date in six digit format. > > > > IMHO, these modules should simply be re-issued with the dates recorded in > > the respective History key. > > > > It's not worth the effort to make the API parse these as they are now. > > The dash is a nonconformance to what should be in the Version key. > > > > Aside: Are there any limits to the number of dot separators in the Version > > value, or to the number of digits in total or in any part? > > Would SWORD crash with a buffer overflow were it to encounter an > > inordinately long Version? > > > > Best regards, > > > > David > > > > Sent from ProtonMail Mobile > > > > On Tue, Sep 25, 2018 at 09:44, Jaak Ristioja <[email protected]> wrote: > > > >> Hello! > >> > >> Most modules include version numbers matching the regular expression > >> > >> ^[0-9]+(.[0-9]+)*$ > >> > >> However, looking at the .conf files, there are version fields with > >> values also containing dashes: > >> > >> ~/.sword/mods.d $ grep -E 'Version=.*-' * > >> 2tgreek.conf:Version=2.7-120109 > >> invstrongsrealgreek.conf:Version=1.4-090107 > >> jesermons.conf:SwordVersion=2017-05-24 > >> strongsrealgreek.conf:Version=1.5-150704 > >> tischmorph.conf:Version=2.7-120109 > >> > >> How should these be interpreted? Should 1.2-3.4 be interpreted as > >> (1).(2-3).(4) or (1.2)-(3.4)? It seems that SWVersion interprets such as > >> just 1.2.4 (without the -3 entirely). > >> > >> God bless! > >> J > >> > >> _______________________________________________ > >> sword-devel mailing list: [email protected] > >> http://www.crosswire.org/mailman/listinfo/sword-devel > >> Instructions to unsubscribe/change your settings at above page > >> > >> > >> _______________________________________________ > >> sword-devel mailing list: [email protected] > >> http://www.crosswire.org/mailman/listinfo/sword-devel > >> Instructions to unsubscribe/change your settings at above page > > > _______________________________________________ > sword-devel mailing list: [email protected] > http://www.crosswire.org/mailman/listinfo/sword-devel > Instructions to unsubscribe/change your settings at above page > _______________________________________________ sword-devel mailing list: [email protected] http://www.crosswire.org/mailman/listinfo/sword-devel Instructions to unsubscribe/change your settings at above page
