diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 677c773..bf45a0b 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -299,7 +299,35 @@ jobs:
         run: |
           cmake -G "MinGW Makefiles" -B build .
           cmake --build build --parallel
-  
+
+  build_test_linux_fuzzer:
+    name: Fuzzer build test (Clang, Linux x64)
+    runs-on: ubuntu-22.04
+    steps:
+      - uses: actions/checkout@v3
+      - name: Create build directory
+        run: cmake -E make_directory ${{runner.workspace}}/build
+      - name: Configure everything
+        working-directory: ${{runner.workspace}}/build
+        run: CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake ../UEFITool/fuzzing
+      - name: Build everything
+        working-directory: ${{runner.workspace}}/build
+        shell: bash
+        run: cmake --build .
+      - name: Create dist directory
+        run: cmake -E make_directory ${{runner.workspace}}/dist
+      - name: Archive everything
+        working-directory: ${{runner.workspace}}/build
+        shell: bash
+        run: |
+          UEFITOOL_VER=$(cat ../UEFITool/version.h | grep PROGRAM_VERSION | cut -d'"' -f2 | sed 's/NE alpha /A/') ; \
+          zip -qryj ../dist/ffsparser_fuzzer_NE_${UEFITOOL_VER}_x64_linux.zip ./ffsparser_fuzzer
+      - name: Upload to artifacts
+        uses: actions/upload-artifact@v4
+        with:
+          name: Fuzzer
+          path: ${{runner.workspace}}/dist/*.zip
+
 # Static Analysis
   build_analyze_linux_coverity:
     env:
diff --git a/common/utility.h b/common/utility.h
index 7a24e2a..4529774 100755
--- a/common/utility.h
+++ b/common/utility.h
@@ -70,7 +70,7 @@ INTN findPattern(const UINT8 *pattern, const UINT8 *patternMask, UINTN patternSi
 template <typename T>
 inline T readUnaligned(const T *v) {
     T tmp = {};
-    memcpy(&tmp, v, sizeof(T));
+    memcpy(reinterpret_cast<void*>(&tmp), reinterpret_cast<const void*>(v), sizeof(T));
     return tmp;
 }