Browse code

Merge pull request #1346 from micahsnyder/CLAM-2638-0.103.12-and-backports

Clam 2638 0.103.12 and backports

Micah Snyder authored on 2024/08/31 06:32:27
Showing 15 changed files
... ...
@@ -15,7 +15,7 @@ string(TIMESTAMP TODAY "%Y%m%d")
15 15
 set(VERSION_SUFFIX "")
16 16
 
17 17
 project( ClamAV
18
-         VERSION "0.103.11"
18
+         VERSION "0.103.12"
19 19
          DESCRIPTION "ClamAV open source email, web, and end-point anti-virus toolkit." )
20 20
 
21 21
 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
22 22
new file mode 100644
... ...
@@ -0,0 +1,6 @@
0
+FROM ubuntu:18.04
1
+
2
+RUN apt-get update && apt-get install -y \
3
+    gcc make automake autoconf m4 pkg-config libtool flex bison valgrind \
4
+    check libbz2-dev libcurl4-openssl-dev libjson-c-dev libmilter-dev \
5
+    libncurses5-dev libpcre2-dev libssl-dev libxml2-dev zlib1g-dev
... ...
@@ -4,23 +4,32 @@ properties(
4 4
         parameters(
5 5
             [
6 6
                 string(name: 'VERSION',
7
-                       defaultValue: '0.103.11',
7
+                       defaultValue: '0.103.12',
8 8
                        description: 'ClamAV version string'),
9 9
                 string(name: 'FRAMEWORK_BRANCH',
10 10
                        defaultValue: '0.103',
11 11
                        description: 'test-framework branch'),
12 12
                 string(name: 'TESTS_BRANCH',
13 13
                        defaultValue: '0.103',
14
-                       description: 'tests branch'),
14
+                       description: 'tests branch for the package and regular tests'),
15 15
                 string(name: 'TESTS_CUSTOM_BRANCH',
16 16
                        defaultValue: '0.103',
17 17
                        description: 'tests-custom branch'),
18 18
                 string(name: 'TESTS_FUZZ_BRANCH',
19 19
                        defaultValue: '0.103',
20 20
                        description: 'tests-fuzz-regression branch'),
21
+                string(name: 'BUILD_PIPELINES_PATH',
22
+                       defaultValue: 'ClamAV/build-pipelines',
23
+                       description: 'build-pipelines path for clamav in Jenkins'),
24
+                string(name: 'TEST_PIPELINES_PATH',
25
+                       defaultValue: 'ClamAV/test-pipelines',
26
+                       description: 'test-pipelines path for clamav in Jenkins'),
21 27
                 string(name: 'BUILD_PIPELINE',
22 28
                        defaultValue: 'build-0.103',
23 29
                        description: 'test-pipelines branch for build acceptance'),
30
+                string(name: 'PACKAGE_PIPELINE',
31
+                       defaultValue: 'package-0.103',
32
+                       description: 'test-pipelines branch for package tests.'),
24 33
                 string(name: 'REGULAR_PIPELINE',
25 34
                        defaultValue: 'regular-0.103',
26 35
                        description: 'test-pipelines branch for regular tests.'),
... ...
@@ -44,7 +53,7 @@ properties(
44 44
     ]
45 45
 )
46 46
 
47
-node('ubuntu-18-x64') {
47
+node('docker') {
48 48
     stage('Generate Tarball') {
49 49
         cleanWs()
50 50
 
... ...
@@ -63,13 +72,24 @@ node('ubuntu-18-x64') {
63 63
                 '''
64 64
         }
65 65
 
66
-        dir(path: 'build') {
67
-            sh """# Make Dist
68
-                if [ -f '../autogen.sh' ] ; then /bin/chmod +x ../autogen.sh && ../autogen.sh ; fi
69
-                ../configure --enable-milter --disable-clamav --disable-silent-rules --enable-llvm --with-system-llvm=no
70
-                make distcheck
71
-                mv clamav-${params.VERSION}*.tar.gz clamav-${params.VERSION}.tar.gz || true"""
72
-            archiveArtifacts(artifacts: "clamav-${params.VERSION}.tar.gz", onlyIfSuccessful: true)
66
+        // start up docker image
67
+        def dockerImage = docker.build("autoconf", "./Jenkins")
68
+
69
+        try {
70
+            dockerImage.inside { c ->
71
+                dir(path: "build") {
72
+                    sh """# Make Dist
73
+                        if [ -f '../autogen.sh' ] ; then /bin/chmod +x ../autogen.sh && ../autogen.sh ; fi
74
+                        ../configure --enable-milter --disable-clamav --disable-silent-rules --enable-llvm --with-system-llvm=no
75
+                        make dist
76
+                        mv clamav-${params.VERSION}*.tar.gz clamav-${params.VERSION}.tar.gz || true"""
77
+                    archiveArtifacts(artifacts: "clamav-${params.VERSION}.tar.gz", onlyIfSuccessful: true)
78
+                }
79
+            }
80
+        }
81
+        catch(IOException err) {
82
+            cleanWs()
83
+            throw err
73 84
         }
74 85
 
75 86
         cleanWs()
... ...
@@ -78,7 +98,7 @@ node('ubuntu-18-x64') {
78 78
     def buildResult
79 79
 
80 80
     stage('Build') {
81
-        buildResult = build(job: "test-pipelines/${params.BUILD_PIPELINE}",
81
+        buildResult = build(job: "${params.BUILD_PIPELINES_PATH}/${params.BUILD_PIPELINE}",
82 82
             propagate: true,
83 83
             wait: true,
84 84
             parameters: [
... ...
@@ -89,24 +109,23 @@ node('ubuntu-18-x64') {
89 89
                 [$class: 'StringParameterValue', name: 'SHARED_LIB_BRANCH', value: "${params.SHARED_LIB_BRANCH}"]
90 90
             ]
91 91
         )
92
-        echo "test-pipelines/${params.BUILD_PIPELINE} #${buildResult.number} succeeded."
92
+        echo "${params.BUILD_PIPELINES_PATH}/${params.BUILD_PIPELINE} #${buildResult.number} succeeded."
93 93
     }
94 94
 
95 95
     stage('Test') {
96 96
         def tasks = [:]
97 97
 
98
-        tasks["regular_and_custom"] = {
99
-            def regularResult
98
+        tasks["package_regular_custom"] = {
100 99
             def exception = null
101 100
             try {
102
-                stage("Regular Pipeline") {
103
-                    regularResult = build(job: "test-pipelines/${params.REGULAR_PIPELINE}",
101
+                stage("Package") {
102
+                    final regularResult = build(job: "${params.TEST_PIPELINES_PATH}/${params.PACKAGE_PIPELINE}",
104 103
                         propagate: true,
105 104
                         wait: true,
106 105
                         parameters: [
107 106
                             [$class: 'StringParameterValue', name: 'CLAMAV_JOB_NAME', value: "${JOB_NAME}"],
108 107
                             [$class: 'StringParameterValue', name: 'CLAMAV_JOB_NUMBER', value: "${BUILD_NUMBER}"],
109
-                            [$class: 'StringParameterValue', name: 'BUILD_JOB_NAME', value: "test-pipelines/${params.BUILD_PIPELINE}"],
108
+                            [$class: 'StringParameterValue', name: 'BUILD_JOB_NAME', value: "${params.BUILD_PIPELINES_PATH}/${params.BUILD_PIPELINE}"],
110 109
                             [$class: 'StringParameterValue', name: 'BUILD_JOB_NUMBER', value: "${buildResult.number}"],
111 110
                             [$class: 'StringParameterValue', name: 'TESTS_BRANCH', value: "${params.TESTS_BRANCH}"],
112 111
                             [$class: 'StringParameterValue', name: 'FRAMEWORK_BRANCH', value: "${params.FRAMEWORK_BRANCH}"],
... ...
@@ -114,14 +133,36 @@ node('ubuntu-18-x64') {
114 114
                             [$class: 'StringParameterValue', name: 'SHARED_LIB_BRANCH', value: "${params.SHARED_LIB_BRANCH}"]
115 115
                         ]
116 116
                     )
117
-                    echo "test-pipelines/${params.REGULAR_PIPELINE} #${regularResult.number} succeeded."
117
+                    echo "${params.TEST_PIPELINES_PATH}/${params.PACKAGE_PIPELINE} #${regularResult.number} succeeded."
118
+                }
119
+            } catch (exc) {
120
+                echo "${params.TEST_PIPELINES_PATH}/${params.PACKAGE_PIPELINE} failed."
121
+                exception = exc
122
+            }
123
+
124
+            try {
125
+                stage("Regular From-Source") {
126
+                    final regularResult = build(job: "${params.TEST_PIPELINES_PATH}/${params.REGULAR_PIPELINE}",
127
+                        propagate: true,
128
+                        wait: true,
129
+                        parameters: [
130
+                            [$class: 'StringParameterValue', name: 'CLAMAV_JOB_NAME', value: "${JOB_NAME}"],
131
+                            [$class: 'StringParameterValue', name: 'CLAMAV_JOB_NUMBER', value: "${BUILD_NUMBER}"],
132
+                            [$class: 'StringParameterValue', name: 'TESTS_BRANCH', value: "${params.TESTS_BRANCH}"],
133
+                            [$class: 'StringParameterValue', name: 'FRAMEWORK_BRANCH', value: "${params.FRAMEWORK_BRANCH}"],
134
+                            [$class: 'StringParameterValue', name: 'VERSION', value: "${params.VERSION}"],
135
+                            [$class: 'StringParameterValue', name: 'SHARED_LIB_BRANCH', value: "${params.SHARED_LIB_BRANCH}"]
136
+                        ]
137
+                    )
138
+                    echo "${params.TEST_PIPELINES_PATH}/${params.REGULAR_PIPELINE} #${regularResult.number} succeeded."
118 139
                 }
119 140
             } catch (exc) {
120
-                echo "test-pipelines/${params.REGULAR_PIPELINE} failed."
141
+                echo "${params.TEST_PIPELINES_PATH}/${params.REGULAR_PIPELINE} failed."
121 142
                 exception = exc
122 143
             }
123
-            stage("Custom Pipeline") {
124
-                final customResult = build(job: "test-pipelines/${params.CUSTOM_PIPELINE}",
144
+
145
+            stage("Custom From-Source") {
146
+                final customResult = build(job: "${params.TEST_PIPELINES_PATH}/${params.CUSTOM_PIPELINE}",
125 147
                     propagate: true,
126 148
                     wait: true,
127 149
                     parameters: [
... ...
@@ -133,17 +174,17 @@ node('ubuntu-18-x64') {
133 133
                         [$class: 'StringParameterValue', name: 'SHARED_LIB_BRANCH', value: "${params.SHARED_LIB_BRANCH}"]
134 134
                     ]
135 135
                 )
136
-                echo "test-pipelines/${params.CUSTOM_PIPELINE} #${customResult.number} succeeded."
136
+                echo "${params.TEST_PIPELINES_PATH}/${params.CUSTOM_PIPELINE} #${customResult.number} succeeded."
137 137
             }
138 138
             if(exception != null) {
139
-                echo "Custom Pipeline passed, but Regular pipeline failed!"
139
+                echo "Custom Pipeline passed, but prior pipelines failed!"
140 140
                 throw exception
141 141
             }
142 142
         }
143 143
 
144 144
         tasks["fuzz_regression"] = {
145 145
             stage("Fuzz Regression") {
146
-                final fuzzResult = build(job: "test-pipelines/${params.FUZZ_PIPELINE}",
146
+                final fuzzResult = build(job: "${params.TEST_PIPELINES_PATH}/${params.FUZZ_PIPELINE}",
147 147
                     propagate: true,
148 148
                     wait: true,
149 149
                     parameters: [
... ...
@@ -154,7 +195,7 @@ node('ubuntu-18-x64') {
154 154
                         [$class: 'StringParameterValue', name: 'VERSION', value: "${params.VERSION}"]
155 155
                     ]
156 156
                 )
157
-                echo "test-pipelines/${params.FUZZ_PIPELINE} #${fuzzResult.number} succeeded."
157
+                echo "${params.TEST_PIPELINES_PATH}/${params.FUZZ_PIPELINE} #${fuzzResult.number} succeeded."
158 158
             }
159 159
         }
160 160
 
... ...
@@ -3,6 +3,10 @@
3 3
 Note: This file refers to the source tarball. Things described here may differ
4 4
  slightly from the binary packages.
5 5
 
6
+## 0.103.12
7
+
8
+ClamAV 0.103.12 is a patch release with the following fixes:
9
+
6 10
 ## 0.103.11
7 11
 
8 12
 ClamAV 0.103.11 is a patch release with the following fixes:
... ...
@@ -22,7 +22,7 @@ AC_PREREQ([2.59])
22 22
 
23 23
 dnl For a release change [devel] to the real version [0.xy]
24 24
 dnl also change VERSION below
25
-AC_INIT([ClamAV], [0.103.11], [https://github.com/Cisco-Talos/clamav/issues], [clamav], [https://www.clamav.net/])
25
+AC_INIT([ClamAV], [0.103.12], [https://github.com/Cisco-Talos/clamav/issues], [clamav], [https://www.clamav.net/])
26 26
 
27 27
 dnl put configure auxiliary into config
28 28
 AC_CONFIG_AUX_DIR([config])
... ...
@@ -998,7 +998,7 @@ fc_error_t get_official_database_lists(
998 998
     uint32_t i;
999 999
 
1000 1000
     const char *hardcodedStandardDatabaseList[] = {"daily", "main", "bytecode"};
1001
-    const char *hardcodedOptionalDatabaseList[] = {"safebrowsing", "test"};
1001
+    const char *hardcodedOptionalDatabaseList[] = {"safebrowsing", "test", "valhalla"};
1002 1002
 
1003 1003
     if ((NULL == standardDatabases) || (NULL == nStandardDatabases) || (NULL == optionalDatabases) || (NULL == nOptionalDatabases)) {
1004 1004
         mprintf("!get_official_database_lists: Invalid arguments.\n");
... ...
@@ -1424,6 +1424,10 @@ fc_error_t perform_database_update(
1424 1424
     uint32_t nUpdated      = 0;
1425 1425
     uint32_t nTotalUpdated = 0;
1426 1426
 
1427
+    uint32_t i;
1428
+    char **doNotPruneDatabaseList = NULL;
1429
+    uint32_t nDoNotPruneDatabases = 0;
1430
+
1427 1431
     STATBUF statbuf;
1428 1432
 
1429 1433
     if (NULL == serverList) {
... ...
@@ -1444,7 +1448,38 @@ fc_error_t perform_database_update(
1444 1444
          * Prune database directory of official databases
1445 1445
          * that are no longer available or no longer desired.
1446 1446
          */
1447
-        (void)fc_prune_database_directory(databaseList, nDatabases);
1447
+
1448
+        // include the URL databases in the prune process
1449
+        doNotPruneDatabaseList = (char **)malloc(sizeof(char *) * (nDatabases + nUrlDatabases));
1450
+        if (NULL == doNotPruneDatabaseList) {
1451
+            logg("!perform_database_update: Can't allocate memory for doNotPruneDatabaseList\n");
1452
+            status = FC_EMEM;
1453
+            goto done;
1454
+        }
1455
+
1456
+        for (i = 0; i < nDatabases; i++) {
1457
+            doNotPruneDatabaseList[i] = strdup(databaseList[i]);
1458
+            if (doNotPruneDatabaseList[i] == NULL) {
1459
+                logg("!perform_database_update: Can't allocate memory for database name in doNotPruneDatabaseList\n");
1460
+                status = FC_EMEM;
1461
+                goto done;
1462
+            }
1463
+        }
1464
+        nDoNotPruneDatabases = nDatabases;
1465
+
1466
+        for (i = 0; i < nUrlDatabases; i++) {
1467
+            // Only append the URL databases that end with '.cvd'
1468
+            if (strlen(urlDatabaseList[i]) > 4 && 0 == strcasecmp(urlDatabaseList[i] + strlen(urlDatabaseList[i]) - 4, ".cvd")) {
1469
+                const char *startOfFilename = strrchr(urlDatabaseList[i], '/') + 1;
1470
+                if (NULL != startOfFilename) {
1471
+                    // Add the base database name to the do-not-prune list, excluding the '.cvd' extension.
1472
+                    doNotPruneDatabaseList[nDatabases + i] = CLI_STRNDUP(startOfFilename, strlen(startOfFilename) - strlen(".cvd"));
1473
+                    nDoNotPruneDatabases++;
1474
+                }
1475
+            }
1476
+        }
1477
+
1478
+        (void)fc_prune_database_directory(doNotPruneDatabaseList, nDoNotPruneDatabases);
1448 1479
     }
1449 1480
 
1450 1481
     /*
... ...
@@ -1515,6 +1550,16 @@ fc_error_t perform_database_update(
1515 1515
 
1516 1516
 done:
1517 1517
 
1518
+    // Free up the database list
1519
+    if (NULL != doNotPruneDatabaseList) {
1520
+        for (i = 0; i < nDoNotPruneDatabases; i++) {
1521
+            free(doNotPruneDatabaseList[i]);
1522
+            doNotPruneDatabaseList[i] = NULL;
1523
+        }
1524
+        free(doNotPruneDatabaseList);
1525
+        doNotPruneDatabaseList = NULL;
1526
+    }
1527
+
1518 1528
     if (LSTAT(g_freshclamTempDirectory, &statbuf) != -1) {
1519 1529
         /* Remove temp directory */
1520 1530
         if (*g_freshclamTempDirectory) {
... ...
@@ -157,6 +157,7 @@ enum FunctionalityLevels {
157 157
     FUNC_LEVEL_0103_9    = 130, /**< LibClamAV release 0.103.9 */
158 158
     FUNC_LEVEL_0103_10   = 131, /**< LibClamAV release 0.103.10 */
159 159
     FUNC_LEVEL_0103_11   = 132, /**< LibClamAV release 0.103.11 */
160
+    FUNC_LEVEL_0103_12   = 133, /**< LibClamAV release 0.103.12 */
160 161
 };
161 162
 
162 163
 /**
... ...
@@ -73,7 +73,7 @@
73 73
  * in re-enabling affected modules.
74 74
  */
75 75
 
76
-#define CL_FLEVEL 132
76
+#define CL_FLEVEL 133
77 77
 #define CL_FLEVEL_DCONF CL_FLEVEL
78 78
 #define CL_FLEVEL_SIGTOOL CL_FLEVEL
79 79
 
... ...
@@ -48,7 +48,8 @@
48 48
 
49 49
 int cli_check_mydoom_log(cli_ctx *ctx)
50 50
 {
51
-    const uint32_t *record;
51
+    uint32_t record[16];
52
+    const uint32_t *ptr;
52 53
     uint32_t check, key;
53 54
     fmap_t *map         = ctx->fmap;
54 55
     unsigned int blocks = map->len / (8 * 4);
... ...
@@ -59,14 +60,24 @@ int cli_check_mydoom_log(cli_ctx *ctx)
59 59
     if (blocks > 5)
60 60
         blocks = 5;
61 61
 
62
-    record = fmap_need_off_once(map, 0, 8 * 4 * blocks);
63
-    if (!record)
62
+    /*
63
+     * The following pointer might not be properly aligned. There there is
64
+     * memcmp() + memcpy() workaround to avoid performing an unaligned access
65
+     * while reading the uint32_t.
66
+     */
67
+    ptr = fmap_need_off_once(map, 0, 8 * 4 * blocks);
68
+    if (!ptr)
64 69
         return CL_CLEAN;
70
+
65 71
     while (blocks) { /* This wasn't probably intended but that's what the current code does anyway */
66
-        if (record[--blocks] == 0xffffffff)
72
+        const uint32_t marker_ff = 0xffffffff;
73
+
74
+	if (!memcmp(&ptr[--blocks], &marker_ff, sizeof(uint32_t)))
67 75
             return CL_CLEAN;
68 76
     }
69 77
 
78
+    memcpy(record, ptr, sizeof(record));
79
+
70 80
     key   = ~be32_to_host(record[0]);
71 81
     check = (be32_to_host(record[1]) ^ key) +
72 82
             (be32_to_host(record[2]) ^ key) +
... ...
@@ -3,7 +3,7 @@ dnl During active development, set: VERSION="<version>-devel-`date +%Y%m%d`"
3 3
 dnl For beta,                  set: VERSION="<version>-beta"
4 4
 dnl For release candidate,     set: VERSION="<version>-rc"
5 5
 dnl For release,               set: VERSION="<version>"
6
-VERSION="0.103.11"
6
+VERSION="0.103.12"
7 7
 
8 8
 major=`echo $PACKAGE_VERSION |cut -d. -f1 | sed -e "s/[^0-9]//g"`
9 9
 minor=`echo $PACKAGE_VERSION |cut -d. -f2 | sed -e "s/[^0-9]//g"`
... ...
@@ -8,7 +8,7 @@
8 8
 
9 9
 [Setup]
10 10
 AppName=ClamAV
11
-AppVersion=0.103.11
11
+AppVersion=0.103.12
12 12
 DefaultDirName={pf}\ClamAV
13 13
 DefaultGroupName=ClamAV
14 14
 AppCopyright=2021 Cisco Systems, Inc.
... ...
@@ -20,7 +20,7 @@ UninstallDisplayName=ClamAV
20 20
 Compression=lzma2
21 21
 SolidCompression=yes
22 22
 OutputDir=.
23
-OutputBaseFilename=ClamAV-0.103.11
23
+OutputBaseFilename=ClamAV-0.103.12
24 24
 WizardImageFile=demon.bmp
25 25
 WizardSmallImageFile=talos.bmp
26 26
 
... ...
@@ -480,7 +480,7 @@
480 480
 #define PACKAGE_NAME "ClamAV"
481 481
 
482 482
 /* Define to the full name and version of this package. */
483
-#define PACKAGE_STRING "ClamAV 0.103.11"
483
+#define PACKAGE_STRING "ClamAV 0.103.12"
484 484
 
485 485
 /* Define to the one symbol short name of this package. */
486 486
 #define PACKAGE_TARNAME "clamav"
... ...
@@ -489,7 +489,7 @@
489 489
 #define PACKAGE_URL "https://www.clamav.net/"
490 490
 
491 491
 /* Define to the version of this package. */
492
-#define PACKAGE_VERSION "0.103.11"
492
+#define PACKAGE_VERSION "0.103.12"
493 493
 
494 494
 /* scan buffer size */
495 495
 #define SCANBUFF 131072
... ...
@@ -525,7 +525,7 @@
525 525
 /* #undef USE_SYSLOG */
526 526
 
527 527
 /* Version number of package */
528
-#define VERSION "0.103.11"
528
+#define VERSION "0.103.12"
529 529
 
530 530
 /* Version suffix for package */
531 531
 #define VERSION_SUFFIX ""
... ...
@@ -100,7 +100,7 @@
100 100
       <ExceptionHandling>Sync</ExceptionHandling>
101 101
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
102 102
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
103
-      <StructMemberAlignment>4Bytes</StructMemberAlignment>
103
+      <StructMemberAlignment>Default</StructMemberAlignment>
104 104
       <RuntimeTypeInfo>false</RuntimeTypeInfo>
105 105
       <PrecompiledHeader>Use</PrecompiledHeader>
106 106
       <PrecompiledHeaderFile>rar.hpp</PrecompiledHeaderFile>
... ...
@@ -131,7 +131,7 @@
131 131
       <ExceptionHandling>Sync</ExceptionHandling>
132 132
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
133 133
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
134
-      <StructMemberAlignment>4Bytes</StructMemberAlignment>
134
+      <StructMemberAlignment>Default</StructMemberAlignment>
135 135
       <RuntimeTypeInfo>false</RuntimeTypeInfo>
136 136
       <PrecompiledHeader>Use</PrecompiledHeader>
137 137
       <PrecompiledHeaderFile>rar.hpp</PrecompiledHeaderFile>
... ...
@@ -162,7 +162,7 @@
162 162
       <MinimalRebuild>false</MinimalRebuild>
163 163
       <ExceptionHandling>Sync</ExceptionHandling>
164 164
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
165
-      <StructMemberAlignment>4Bytes</StructMemberAlignment>
165
+      <StructMemberAlignment>Default</StructMemberAlignment>
166 166
       <BufferSecurityCheck>true</BufferSecurityCheck>
167 167
       <FunctionLevelLinking>true</FunctionLevelLinking>
168 168
       <EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
... ...
@@ -204,7 +204,7 @@
204 204
       <MinimalRebuild>false</MinimalRebuild>
205 205
       <ExceptionHandling>Sync</ExceptionHandling>
206 206
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
207
-      <StructMemberAlignment>4Bytes</StructMemberAlignment>
207
+      <StructMemberAlignment>Default</StructMemberAlignment>
208 208
       <BufferSecurityCheck>true</BufferSecurityCheck>
209 209
       <FunctionLevelLinking>true</FunctionLevelLinking>
210 210
       <RuntimeTypeInfo>false</RuntimeTypeInfo>
... ...
@@ -6,8 +6,8 @@
6 6
 #define REPO_VERSION VERSION
7 7
 #endif
8 8
 
9
-#define RES_VER_Q 0,103,11,0
10
-#define RES_VER_S "ClamAV 0.103.11"
9
+#define RES_VER_Q 0,103,12,0
10
+#define RES_VER_S "ClamAV 0.103.12"
11 11
 
12 12
 VS_VERSION_INFO VERSIONINFO
13 13
     FILEVERSION RES_VER_Q
... ...
@@ -180,10 +180,10 @@ my %CONF = (
180 180
     'PACKAGE' => 'PACKAGE_NAME',
181 181
     'PACKAGE_BUGREPORT' => '"https://github.com/Cisco-Talos/clamav/issues"',
182 182
     'PACKAGE_NAME' => '"ClamAV"',
183
-    'PACKAGE_STRING' => '"ClamAV 0.103.11"',
183
+    'PACKAGE_STRING' => '"ClamAV 0.103.12"',
184 184
     'PACKAGE_TARNAME' => '"clamav"',
185 185
     'PACKAGE_URL' => '"https://www.clamav.net/"',
186
-    'PACKAGE_VERSION' => '"0.103.11"',
186
+    'PACKAGE_VERSION' => '"0.103.12"',
187 187
     'SCANBUFF' => '131072',
188 188
     'SETPGRP_VOID' => '1',
189 189
     'SIZEOF_INT' => '4',