Skip to content

Stack overflow / buffer underrun in 3.4.0RC1 in debug mode (MSVC x86_64) #2221

@asottile

Description

@asottile

Appears to be a regression of #2046

I'll try and get better details when I'm at a computer.

I'm at the 3.4.0RC1 tag: sass/libsass-python#166

Reproduction

(This time with proper file paths!):

test.bat

rm *.obj
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe" ^
    /Zi /c /nologo /Ox /O2 /W3 /GL /DNDEBUG /MD /EHsc /MT -I.\include ^
    "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" ^
    "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" ^
    "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" ^
    "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" ^
    "-IC:\Program Files (x86)\Windows Kits\8.1\include\\shared" ^
    "-IC:\Program Files (x86)\Windows Kits\8.1\include\\um" ^
    "-IC:\Program Files (x86)\Windows Kits\8.1\include\\winrt" ^
    src/*.c

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe" ^
    /Zi /c /nologo /Ox /O2 /W3 /GL /DNDEBUG /MD /EHsc /MT -I.\include ^
    "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" ^
    "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" ^
    "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" ^
    "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" ^
    "-IC:\Program Files (x86)\Windows Kits\8.1\include\\shared" ^
    "-IC:\Program Files (x86)\Windows Kits\8.1\include\\um" ^
    "-IC:\Program Files (x86)\Windows Kits\8.1\include\\winrt" ^
    src/*.cpp main.cpp

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\link.exe" ^
    /nologo /INCREMENTAL:NO /LTCG ^
    "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64" ^
    "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\LIB\amd64" ^
    "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64" ^
    "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x64" ^
    "/LIBPATH:C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64" ^
    /OUT:main.exe /DEBUG *.obj
main.exe

main.cpp

#include <sass/context.h>
#include <iostream>

int main() {
    std::cout << "Making data context" << std::endl;
    struct Sass_Data_Context* context = sass_make_data_context(sass_copy_c_string("a { b { color: blue; }"));
    std::cout << "Compiling data context" << std::endl;
    sass_compile_data_context(context);
    std::cout << "Getting output context" << std::endl;
    struct Sass_Context* ctx = sass_data_context_get_context(context);
    if (sass_context_get_error_status(ctx)) {
        std::cout << "Printing error status" << std::endl;
        std::cout << sass_context_get_error_status(ctx) << std::endl;
        std::cout << "Printing error message" << std::endl;
        std::cout << sass_context_get_error_message(ctx) << std::endl;
    } else {
        std::cout << sass_context_get_output_string(ctx) << std::endl;
    }
    sass_delete_data_context(context);
    return 0;
}

Commands to reproduce

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\vcvarsx86_amd64.bat"
test.bat

Output

C:\Users\IEUser\libsass-python\libsass>test.bat

C:\Users\IEUser\libsass-python\libsass>rm *.obj

C:\Users\IEUser\libsass-python\libsass>"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe"     /Zi /c /nologo /Ox /O2 /W3 /GL /DNDEBUG /MD /EHsc /MT -I.\include     "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE"     "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE"     "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt"     "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um"     "-IC:\Program Files (x86)\Windows Kits\8.1\include\\shared"     "-IC:\Program Files (x86)\Windows Kits\8.1\include\\um"     "-IC:\Program Files (x86)\Windows Kits\8.1\include\\winrt"     src/*.c
cl : Command line warning D9025 : overriding '/MD' with '/MT'
c99func.c
cencode.c

C:\Users\IEUser\libsass-python\libsass>"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe"     /Zi /c /nologo /Ox /O2 /W3 /GL /DNDEBUG /MD /EHsc /MT -I.\include     "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE"     "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE"     "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt"     "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um"     "-IC:\Program Files (x86)\Windows Kits\8.1\include\\shared"     "-IC:\Program Files (x86)\Windows Kits\8.1\include\\um"     "-IC:\Program Files (x86)\Windows Kits\8.1\include\\winrt"     src/*.cpp main.cpp
cl : Command line warning D9025 : overriding '/MD' with '/MT'
ast.cpp
base64vlq.cpp
bind.cpp
check_nesting.cpp
color_maps.cpp
constants.cpp
context.cpp
cssize.cpp
emitter.cpp
environment.cpp
error_handling.cpp
eval.cpp
expand.cpp
extend.cpp
file.cpp
functions.cpp
inspect.cpp
json.cpp
lexer.cpp
listize.cpp
Compiling...
memory_manager.cpp
node.cpp
output.cpp
parser.cpp
plugins.cpp
position.cpp
prelexer.cpp
remove_placeholders.cpp
sass.cpp
sass2scss.cpp
sass_context.cpp
sass_functions.cpp
sass_util.cpp
sass_values.cpp
source_map.cpp
to_c.cpp
to_value.cpp
units.cpp
utf8_string.cpp
util.cpp
Compiling...
values.cpp
main.cpp

C:\Users\IEUser\libsass-python\libsass>"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\link.exe"     /nologo /INCREMENTAL:NO /LTCG     "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64"     "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\LIB\amd64"     "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64"     "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x64"     "/LIBPATH:C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64"     /OUT:main.exe /DEBUG *.obj
Generating code
Finished generating code

C:\Users\IEUser\libsass-python\libsass>main.exe
Making data context
Compiling data context

Where it breaks at

Puzzlingly, it appears to crash at the same point as the fix from last time: https://github.com/sass/libsass/blob/3.4.0-RC1/src/sass_context.cpp#L128

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      pFad - Phonifier reborn

      Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

      Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


      Alternative Proxies:

      Alternative Proxy

      pFad Proxy

      pFad v3 Proxy

      pFad v4 Proxy