Skip to content
Snippets Groups Projects
Commit 50ab589e authored by Timo Teräs's avatar Timo Teräs
Browse files

version: increase number of digits supported in version component

Report also version numbers as invalid if there's more than 18
digits.

fixes #10774
parent d38e2dd6
No related branches found
No related tags found
No related merge requests found
......@@ -68,11 +68,12 @@ static void next_token(int *type, apk_blob_t *blob)
*type = n;
}
static int get_token(int *type, apk_blob_t *blob)
static int64_t get_token(int *type, apk_blob_t *blob)
{
static const char *pre_suffixes[] = { "alpha", "beta", "pre", "rc" };
static const char *post_suffixes[] = { "cvs", "svn", "git", "hg", "p" };
int v = 0, i = 0, nt = TOKEN_INVALID;
int i = 0, nt = TOKEN_INVALID;
int64_t v = 0;
if (blob->len <= 0) {
*type = TOKEN_END;
......@@ -96,6 +97,7 @@ static int get_token(int *type, apk_blob_t *blob)
v *= 10;
v += blob->ptr[i++] - '0';
}
if (i >= 18) goto invalid;
break;
case TOKEN_LETTER:
v = blob->ptr[i++];
......@@ -121,6 +123,7 @@ static int get_token(int *type, apk_blob_t *blob)
break;
/* fallthrough: invalid suffix */
default:
invalid:
*type = TOKEN_INVALID;
return -1;
}
......@@ -200,7 +203,7 @@ int apk_version_validate(apk_blob_t ver)
int apk_version_compare_blob_fuzzy(apk_blob_t a, apk_blob_t b, int fuzzy)
{
int at = TOKEN_DIGIT, bt = TOKEN_DIGIT, tt;
int av = 0, bv = 0;
int64_t av = 0, bv = 0;
if (APK_BLOB_IS_NULL(a) || APK_BLOB_IS_NULL(b)) {
if (APK_BLOB_IS_NULL(a) && APK_BLOB_IS_NULL(b))
......
......@@ -726,3 +726,4 @@
1.3_pre1-r1 < 1.3.2
1.0_p10-r0 > 1.0_p9-r0
0.1.0_alpha_pre2 < 0.1.0_alpha
1.0.0_pre20191002222144-r0 < 1.0.0_pre20210530193627-r0
......@@ -726,3 +726,4 @@
1.3_pre1-r1 < 1.3.2
1.0_p10-r0 > 1.0_p9-r0
0.1.0_alpha_pre2 < 0.1.0_alpha
1.0.0_pre20191002222144-r0 < 1.0.0_pre20210530193627-r0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment