4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / CMakeLists.txt TXT
cmake_minimum_required(VERSION 3.14)

include(cmake/prelude.cmake)

project(
    djvulibre_mmr_exploit
    VERSION 0.1.0
    DESCRIPTION "Creates a simple djvu file, which triggers the OOB-write in MMRDecoder::scanruns (patched)"
    HOMEPAGE_URL "https://github.com/ThePhykon"
    LANGUAGES CXX
)

# Permanently disable cppcheck
set(CMAKE_CXX_CPPCHECK "" CACHE STRING "cppcheck command" FORCE)

include(cmake/project-is-top-level.cmake)
include(cmake/variables.cmake)

# ---- Declare library ----

add_library(
    djvulibre_mmr_exploit_lib OBJECT
    source/lib.cpp
    source/bitpacker.cpp
)

target_include_directories(
    djvulibre_mmr_exploit_lib ${warning_guard}
    PUBLIC
    "\$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/source>"
)

target_compile_features(djvulibre_mmr_exploit_lib PUBLIC cxx_std_20)

find_package(fmt REQUIRED)
target_link_libraries(djvulibre_mmr_exploit_lib PRIVATE fmt::fmt)

add_subdirectory(libs/iffwriter)
target_link_libraries(djvulibre_mmr_exploit_lib PUBLIC iffwriter::iffwriter)
# ---- Declare executable ----

add_executable(djvulibre_mmr_exploit_exe source/main.cpp)
add_executable(djvulibre_mmr_exploit::exe ALIAS djvulibre_mmr_exploit_exe)

set_property(TARGET djvulibre_mmr_exploit_exe PROPERTY OUTPUT_NAME djvulibre_mmr_exploit)

target_compile_features(djvulibre_mmr_exploit_exe PRIVATE cxx_std_20)

target_link_libraries(djvulibre_mmr_exploit_exe PRIVATE djvulibre_mmr_exploit_lib)

# ---- Install rules ----

if(NOT CMAKE_SKIP_INSTALL_RULES)
  include(cmake/install-rules.cmake)
endif()

# ---- Developer mode ----

if(NOT djvulibre_mmr_exploit_DEVELOPER_MODE)
  return()
elseif(NOT PROJECT_IS_TOP_LEVEL)
  message(
      AUTHOR_WARNING
      "Developer mode is intended for developers of djvulibre_mmr_exploit"
  )
endif()

include(cmake/dev-mode.cmake)