Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

check for negative-size params in code #390

Closed
gcode-importer opened this issue Sep 17, 2014 · 29 comments
Closed

check for negative-size params in code #390

gcode-importer opened this issue Sep 17, 2014 · 29 comments

Comments

@gcode-importer
Copy link

Originally reported on Google Code with ID 390

 issue 413375: Negative-size-param in opj_t2_decode_packets
    http://code.google.com/p/chromium/issues/detail?id=413375

Reported by detonin on 2014-09-17 09:00:37

@gcode-importer
Copy link
Author

Reported by detonin on 2014-09-17 09:03:20

  • Labels added: Priority-Critical
  • Labels removed: Priority-High

@gcode-importer
Copy link
Author

Reported by detonin on 2014-09-17 09:17:09

  • Labels added: OpjVersion-2.x

@gcode-importer
Copy link
Author

Antonin,

I'm pretty sure this is fixed by commit r2883. This is more of a code review than easy
debug given the conditions that shall be met to see this bug. Nevertheless, I attached
the image from chromium.

Reported by mayeut on 2014-09-20 12:04:43


- _Attachment: [0.jp2](https://storage.googleapis.com/google-code-attachments/openjpeg/issue-390/comment-3/0.jp2)_

@gcode-importer
Copy link
Author

Thks Matthieu.
Kakadu decodes sth ugly and issues a warning. I keep the issue open to reach this behaviour
but lower the priority.

Reported by detonin on 2014-09-22 21:32:31

  • Labels added: Priority-Medium
  • Labels removed: Priority-Critical

@gcode-importer
Copy link
Author

If r2883 didn't do the trick, I guess this patch will or I'm seriously missing something.

Still not able to reproduce

Reported by mayeut on 2014-09-27 13:28:14

@gcode-importer
Copy link
Author

+ cc Bo Xu from Foxit 

... so that you can follow what happens on these issues.

Reported by detonin on 2014-09-28 21:18:37

@gcode-importer
Copy link
Author

Previous patch wasn't applied properly for some reason. Re-submit patch.

Reported by mayeut on 2014-09-29 20:10:23


- _Attachment: [issue390.patch](https://storage.googleapis.com/google-code-attachments/openjpeg/issue-390/comment-7/issue390.patch)_

@gcode-importer
Copy link
Author

This issue was updated by revision r2890.

Should be rechecked with ASan and pdfium

Reported by detonin on 2014-09-30 10:07:20

  • Labels added: Priority-Critical
  • Labels removed: Priority-Medium

@gcode-importer
Copy link
Author

Pdfium update to r2891, still crash in this issue.

Reported by bo_xu@foxitsoftware.com on 2014-09-30 17:24:06

@gcode-importer
Copy link
Author

@bo_xu,

could you please paste the ASan summary from the latest update in this issue please.
I do not have access to the test case link in chromium & can't reproduce this issue
on my end.

Reported by mayeut on 2014-09-30 17:55:55

@gcode-importer
Copy link
Author

With r2891, mac OS i386, clang, ASAN :
./bin/opj_decompress -i ../../data/issue390/0.jp2 -o 0.bmp

[INFO] Start to read j2k main header (123).
[INFO] Main header has been correctly decoded.
[INFO] No decoded area parameters, set the decoded area to the whole image
[INFO] Header of tile 1 / 4 has been read.
read: segment too long (1034683436) with max (186) for codeblock 0 (p=0, b=0, r=4,
c=0)
[ERROR] Failed to decode.
[ERROR] Failed to decode tile 1/4
[ERROR] Failed to decode the codestream in the JP2 file
ERROR -> opj_decompress: failed to decode image!

Reported by mayeut on 2014-09-30 18:07:30

@gcode-importer
Copy link
Author

kdu_expand -i ../../data/issue390/0.jp2 -o 0.bmp
Kakadu Core Warning:
Unrecognized/unimplemented marker code, 0xffff, found in code-stream.

Consumed 23 tile-part(s) from a total of 4 tile(s).
Consumed 5,167 codestream bytes (excluding any file format) = 0.535302
bits/pel.
Processed using the multi-threaded environment, with
    2 parallel threads of execution

Reported by mayeut on 2014-09-30 19:47:03


- _Attachment: [0.bmp](https://storage.googleapis.com/google-code-attachments/openjpeg/issue-390/comment-12/0.bmp)_

@gcode-importer
Copy link
Author

Recommit message so that it's the last & easily seen.

@bo_xu,

could you please paste the ASan summary from the latest update in this issue please.
I do not have access to the test case link in chromium & can't reproduce this issue
on my end.

Reported by mayeut on 2014-10-01 17:25:04

@gcode-importer
Copy link
Author

=================================================================
==28227==ERROR: AddressSanitizer: negative-size-param: (size=1034683436)
    #0 0x80bacdd in __asan_memcpy ??:0:0
    #1 0x80baede in __asan_memcpy ??:0:0
    #2 0x854b766 in opj_t2_read_packet_data /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/t2.c:1180:33
    #3 0x854b766 in opj_t2_decode_packet /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/t2.c:524:0
    #4 0x854b766 in opj_t2_decode_packets /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/t2.c:399:0
    #5 0x84dc040 in opj_tcd_t2_decode /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/tcd.c:1479:15
    #6 0x84dc040 in opj_tcd_decode_tile /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/tcd.c:1222:0
    #7 0x84a79cd in opj_j2k_decode_tile /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/j2k.c:7796:15
    #8 0x84bb9df in opj_j2k_decode_tiles /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/j2k.c:9305:23
    #9 0x84acddd in opj_j2k_exec /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/j2k.c:7187:41
    #10 0x84acddd in opj_j2k_decode /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/j2k.c:9496:0
    #11 0x8370406 in opj_jp2_decode /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/jp2.c:1300:8
    #12 0x836c6e1 in opj_decode /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/openjpeg.c:412:10
    #13 0x8364519 in CJPX_Decoder::Init(unsigned char const*, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp:626:15
    #14 0x8365938 in CCodec_JpxModule::CreateDecoder(unsigned char const*, unsigned
int, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp:767:10
    #15 0x82cac0d in CPDF_DIBSource::LoadJpxBitmap() /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp:643:21
    #16 0x82c614e in CPDF_DIBSource::CreateDecoder() /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp:599:9
    #17 0x82c1f94 in CPDF_DIBSource::StartLoadDIBSource(CPDF_Document*, CPDF_Stream
const*, int, CPDF_Dictionary*, CPDF_Dictionary*, int, unsigned int, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp:335:15
    #18 0x82b0245 in CPDF_ImageCache::StartGetCachedBitmap(CPDF_Dictionary*, CPDF_Dictionary*,
int, unsigned int, int, CPDF_RenderStatus*, int, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp:310:15
    #19 0x82afe3c in CPDF_PageRenderCache::StartGetCachedBitmap(CPDF_Stream*, int,
unsigned int, int, CPDF_RenderStatus*, int, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp:131:15
    #20 0x82d3499 in CPDF_ProgressiveImageLoaderHandle::Start(CPDF_ImageLoader*, CPDF_ImageObject
const*, CPDF_PageRenderCache*, int, unsigned int, int, CPDF_RenderStatus*, int, int)
/home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp:1489:15
    #21 0x82d43aa in CPDF_ImageLoader::StartLoadImage(CPDF_ImageObject const*, CPDF_PageRenderCache*,
void*&, int, unsigned int, int, CPDF_RenderStatus*, int, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp:1549:19
    #22 0x82b5c2b in CPDF_ImageRenderer::StartLoadDIBSource() /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp:371:9
    #23 0x82b1a32 in CPDF_ImageRenderer::Start(CPDF_RenderStatus*, CPDF_PageObject
const*, CFX_Matrix const*, int, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp:525:9
    #24 0x82a2fc6 in CPDF_RenderStatus::ContinueSingleObject(CPDF_PageObject const*,
CFX_Matrix const*, IFX_Pause*) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render.cpp:350:14
    #25 0x82acb9e in CPDF_ProgressiveRenderer::Continue(IFX_Pause*) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render.cpp:1175:21
    #26 0x82ab79a in CPDF_ProgressiveRenderer::Start(CPDF_RenderContext*, CFX_RenderDevice*,
CPDF_RenderOptions const*, IFX_Pause*, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render.cpp:1114:5
    #27 0x80f6952 in FPDF_RenderPage_Retail(CRenderContext*, void*, int, int, int,
int, int, int, int, IFSDK_PAUSE_Adapter*) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/fpdfsdk/src/fpdfview.cpp:789:2
    #28 0x80f6cf1 in FPDF_RenderPageBitmap /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/fpdfsdk/src/fpdfview.cpp:586:2
    #29 0x80f336b in RenderPdf(char const*, char const*, unsigned int, OutputFormat)
/home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/samples/pdfium_test.cc:324:5
    #30 0x80f3e0d in main /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/samples/pdfium_test.cc:406:7
    #31 0xf723e4d2 in __libc_start_main ??:0:0
    #32 0x80f2484 in _start ??:0:0

0xf25013f2 is located 1394 bytes inside of 1580-byte region [0xf2500e80,0xf25014ac)
allocated by thread T0 here:
    #0 0x80d66c1 in realloc ??:0:0
    #1 0x84a5a3d in opj_j2k_read_sod /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/j2k.c:4327:61
    #2 0x84a5a3d in opj_j2k_read_tile_header /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/j2k.c:7690:0
    #3 0x84bb8ed in opj_j2k_decode_tiles /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/j2k.c:9277:23
    #4 0x84acddd in opj_j2k_exec /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/j2k.c:7187:41
    #5 0x84acddd in opj_j2k_decode /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/j2k.c:9496:0
    #6 0x8370406 in opj_jp2_decode /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/jp2.c:1300:8
    #7 0x836c6e1 in opj_decode /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/fx_libopenjpeg/src/../libopenjpeg20/openjpeg.c:412:10
    #8 0x8364519 in CJPX_Decoder::Init(unsigned char const*, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp:626:15
    #9 0x8365938 in CCodec_JpxModule::CreateDecoder(unsigned char const*, unsigned
int, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp:767:10
    #10 0x82cac0d in CPDF_DIBSource::LoadJpxBitmap() /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp:643:21
    #11 0x82c614e in CPDF_DIBSource::CreateDecoder() /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp:599:9
    #12 0x82c1f94 in CPDF_DIBSource::StartLoadDIBSource(CPDF_Document*, CPDF_Stream
const*, int, CPDF_Dictionary*, CPDF_Dictionary*, int, unsigned int, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp:335:15
    #13 0x82b0245 in CPDF_ImageCache::StartGetCachedBitmap(CPDF_Dictionary*, CPDF_Dictionary*,
int, unsigned int, int, CPDF_RenderStatus*, int, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp:310:15
    #14 0x82afe3c in CPDF_PageRenderCache::StartGetCachedBitmap(CPDF_Stream*, int,
unsigned int, int, CPDF_RenderStatus*, int, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp:131:15
    #15 0x82d3499 in CPDF_ProgressiveImageLoaderHandle::Start(CPDF_ImageLoader*, CPDF_ImageObject
const*, CPDF_PageRenderCache*, int, unsigned int, int, CPDF_RenderStatus*, int, int)
/home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp:1489:15
    #16 0x82d43aa in CPDF_ImageLoader::StartLoadImage(CPDF_ImageObject const*, CPDF_PageRenderCache*,
void*&, int, unsigned int, int, CPDF_RenderStatus*, int, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp:1549:19
    #17 0x82b5c2b in CPDF_ImageRenderer::StartLoadDIBSource() /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp:371:9
    #18 0x82b1a32 in CPDF_ImageRenderer::Start(CPDF_RenderStatus*, CPDF_PageObject
const*, CFX_Matrix const*, int, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp:525:9
    #19 0x82a2fc6 in CPDF_RenderStatus::ContinueSingleObject(CPDF_PageObject const*,
CFX_Matrix const*, IFX_Pause*) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render.cpp:350:14
    #20 0x82acb9e in CPDF_ProgressiveRenderer::Continue(IFX_Pause*) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render.cpp:1175:21
    #21 0x82ab79a in CPDF_ProgressiveRenderer::Start(CPDF_RenderContext*, CFX_RenderDevice*,
CPDF_RenderOptions const*, IFX_Pause*, int) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/core/src/fpdfapi/fpdf_render/fpdf_render.cpp:1114:5
    #22 0x80f6952 in FPDF_RenderPage_Retail(CRenderContext*, void*, int, int, int,
int, int, int, int, IFSDK_PAUSE_Adapter*) /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/fpdfsdk/src/fpdfview.cpp:789:2
    #23 0x80f6cf1 in FPDF_RenderPageBitmap /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/fpdfsdk/src/fpdfview.cpp:586:2
    #24 0x80f336b in RenderPdf(char const*, char const*, unsigned int, OutputFormat)
/home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/samples/pdfium_test.cc:324:5
    #25 0x80f3e0d in main /home/foxit/chrome_asan/src/out/Release/../../third_party/pdfium/samples/pdfium_test.cc:406:7
    #26 0xf723e4d2 in __libc_start_main ??:0:0

SUMMARY: AddressSanitizer: negative-size-param ??:0 ??
==28227==ABORTING

Reported by bo_xu@foxitsoftware.com on 2014-10-01 17:30:23

@gcode-importer
Copy link
Author

#14 is what I got when I update pdfium to openjpeg r2891

Reported by bo_xu@foxitsoftware.com on 2014-10-01 17:31:22

@gcode-importer
Copy link
Author

 There are overflow checks for this...
Last clue, from what I could read here and there pointer comparisons might not be valid
in C.

This patch casts to unsigned integral type before comparing. 

Reported by mayeut on 2014-10-01 18:26:14


- _Attachment: [issue390.patch](https://storage.googleapis.com/google-code-attachments/openjpeg/issue-390/comment-16/issue390.patch)_

@gcode-importer
Copy link
Author

I tried the patch in #16 but still crash in a similar location.

This but is not reproducible in 64bit build of pdfium but in 32 bit build. Maybe this
can give some clue? https://code.google.com/p/chromium/wiki/LinuxBuild32On64

Reported by bo_xu@foxitsoftware.com on 2014-10-01 20:31:34

@gcode-importer
Copy link
Author

I tried both 32 & 64 bit  builds but not able to reproduce. The issue solved with r2883
was happening on 32 bits also on my end.

If you can try the attached "debug output" patch & paste the output please.
This is some kind of remote debug...  

Reported by mayeut on 2014-10-01 22:09:56


- _Attachment: [issue390.printf.patch](https://storage.googleapis.com/google-code-attachments/openjpeg/issue-390/comment-18/issue390.printf.patch)_

@gcode-importer
Copy link
Author

Here is the output log

Reported by bo_xu@foxitsoftware.com on 2014-10-01 22:24:37


- _Attachment: [debug.output](https://storage.googleapis.com/google-code-attachments/openjpeg/issue-390/comment-19/debug.output)_

@gcode-importer
Copy link
Author

Let's do some maths with the overflow check added in r2883 (t2.c:1135) :
PDFIUMDBG (1) is output before this check.
((OPJ_SIZE_T)(l_current_data + l_seg->newlen) < (OPJ_SIZE_T)l_current_data)
((OPJ_SIZE_T)(0xf25013f2 + 0x3DAC042C) < (OPJ_SIZE_T)0xf25013f2)
((OPJ_SIZE_T)(0x2FFC181E) < (OPJ_SIZE_T)0xf25013f2)

The check shall work as expected... I don't know what I'm missing here unless if OPJ_SIZE_T
is signed but this would be very wrong (means size_t is signed...).


Reported by mayeut on 2014-10-02 08:19:49

@gcode-importer
Copy link
Author

@bo_xu,

could you try this patch.
It seems that the previous overflow check was optimized out.
http://lwn.net/Articles/278137/ amongst my readings.

I did learn something worthwhile today, or so I hope.

Regards,
Matthieu

Reported by mayeut on 2014-10-02 21:54:20


- _Attachment: [issue390.patch](https://storage.googleapis.com/google-code-attachments/openjpeg/issue-390/comment-21/issue390.patch)_

@gcode-importer
Copy link
Author

PS : I tried with hardcoded values from your output. Previous check ends with Asan complaining.
This one fails gracefully.

Reported by mayeut on 2014-10-02 21:56:41

@gcode-importer
Copy link
Author

Yes! It works this time.

Reported by bo_xu@foxitsoftware.com on 2014-10-02 22:03:45

@gcode-importer
Copy link
Author

I saw there are some other similar checks that needs to be changed as well?

Reported by bo_xu@foxitsoftware.com on 2014-10-02 22:13:26

@gcode-importer
Copy link
Author

This issue was updated by revision r2894.

Patch from Matthieu applied. Left open to apply this to other places in
code.

Reported by detonin on 2014-10-03 10:15:41

@gcode-importer
Copy link
Author

Antonin,

I did not find many overflow checks with pointer arithmetic in all "if" statements
of openjp2 (I did not check the rest of the source code).

I'll run CTest suite with this patch in a few hours & tell you if it's OK.

I added one overflow check in t2.c opj_t2_skip_packet_data

Reported by mayeut on 2014-10-03 13:35:59


- _Attachment: [issue390.continued.patch](https://storage.googleapis.com/google-code-attachments/openjpeg/issue-390/comment-26/issue390.continued.patch)_

@gcode-importer
Copy link
Author

All tests OK in CDash

Reported by mayeut on 2014-10-03 20:57:48

@gcode-importer
Copy link
Author

Reported by detonin on 2014-10-05 16:18:14

  • Status changed: Verified

@gcode-importer
Copy link
Author

This issue was closed by revision r2898.

Reported by detonin on 2014-10-06 21:05:37

  • Status changed: Fixed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants