Michel Dänzer <mic...@daenzer.net> writes:

> From: Michel Dänzer <michel.daen...@amd.com>
>
> Fixes reading beyond allocated memory:
>
> ==1936== Invalid read of size 1
> ==1936==    at 0x4C2C1B4: strlen (vg_replace_strmem.c:412)
> ==1936==    by 0x9E00C30: std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> >::basic_string(char const*, std::allocator<char> 
> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20)
> ==1936==    by 0x5B44FAE: clover::compile_program_llvm(clover::compat::string 
> const&, clover::compat::vector<clover::compat::pair<clover::compat::string, 
> clover::compat::string> > const&, pipe_shader_ir, clover::compat::string 
> const&, clover::compat::string const&, clover::compat::string&) 
> (invocation.cpp:698)
> ==1936==    by 0x5B39A20: 
> clover::program::build(clover::ref_vector<clover::device> const&, char 
> const*, clover::compat::vector<clover::compat::pair<clover::compat::string, 
> clover::compat::string> > const&) (program.cpp:63)
> ==1936==    by 0x5B20152: clBuildProgram (program.cpp:182)
> ==1936==    by 0x400F41: main (hello_world.c:109)
> ==1936==  Address 0x56fee1f is 0 bytes after a block of size 15 alloc'd
> ==1936==    at 0x4C28C20: malloc (vg_replace_malloc.c:296)
> ==1936==    by 0x5B398F0: alloc (compat.hpp:59)
> ==1936==    by 0x5B398F0: vector<std::basic_string<char> > (compat.hpp:98)
> ==1936==    by 0x5B398F0: string<std::basic_string<char> > (compat.hpp:327)
> ==1936==    by 0x5B398F0: 
> clover::program::build(clover::ref_vector<clover::device> const&, char 
> const*, clover::compat::vector<clover::compat::pair<clover::compat::string, 
> clover::compat::string> > const&) (program.cpp:63)
> ==1936==    by 0x5B20152: clBuildProgram (program.cpp:182)
> ==1936==    by 0x400F41: main (hello_world.c:109)
>
> Signed-off-by: Michel Dänzer <michel.daen...@amd.com>

Looks good,
Reviewed-by: Francisco Jerez <curroje...@riseup.net>

> ---
>
> v2: Just use target instead of target.begin(), as suggested by Francisco
>     Jerez
>
>  src/gallium/state_trackers/clover/llvm/invocation.cpp | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp 
> b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> index 7a0be53..edeed56 100644
> --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
> +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> @@ -699,9 +699,9 @@ clover::compile_program_llvm(const compat::string &source,
>                                                           debug_options, 0);
>  
>     std::vector<llvm::Function *> kernels;
> -   size_t processor_str_len = std::string(target.begin()).find_first_of("-");
> -   std::string processor(target.begin(), 0, processor_str_len);
> -   std::string triple(target.begin(), processor_str_len + 1,
> +   size_t processor_str_len = std::string(target).find_first_of("-");
> +   std::string processor(target, 0, processor_str_len);
> +   std::string triple(target, processor_str_len + 1,
>                        target.size() - processor_str_len - 1);
>     clang::LangAS::Map address_spaces;
>     llvm::LLVMContext llvm_ctx;
> -- 
> 2.1.4

Attachment: pgpltW0wIwxeF.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to