Questions imported using Moodle XML format are not being decoded properly, resulting in corrupted image file.
A question gets imported properly and the corresponding image, extracted from <image_base64> tag, is created in the moodledata directory. However, the output image file is not being produced correctly and hence nothing is displayed when a user views the question. An interesting point to note is that the output file is always 8 bytes in size no matter what the supplied base64 encoding is.
I have confirmed this bug by exporting a perfectly alight question out of Moodle and then importing it back. The output image file is always corrupted. Given below is a sample image data encapsulated inside the <image_base64> tag. The image files produced by moodle and by an external base64 decoder are both attached for analysis purposes.
-------------------------------------------
Sample MoodleXML Question:
-------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="multichoice">
<name><text>selfmade</text>
</name>
<questiontext format="html">
<text>Questiontext apart from the image</text>
</questiontext>
<image>moodle_image.png</image>
<image_base64>
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
</image_base64>
<generalfeedback>
<text>general feedback</text>
</generalfeedback>
<defaultgrade>1</defaultgrade>
<penalty>0</penalty>
<hidden>0</hidden>
<shuffleanswers>0</shuffleanswers>
<single>true</single>
<shuffleanswers>false</shuffleanswers>
<correctfeedback> <text>correct feedback</text>
</correctfeedback>
<partiallycorrectfeedback> <text>partially correct feedback</text>
</partiallycorrectfeedback>
<incorrectfeedback> <text>incorrect feedback</text>
</incorrectfeedback>
<answer fraction="0">
<text>(a)</text>
<feedback>
<text></text>
</feedback>
</answer>
<answer fraction="0">
<text>(b)</text>
<feedback>
<text></text>
</feedback>
</answer>
<answer fraction="100">
<text>(c)</text>
<feedback>
<text></text>
</feedback>
</answer>
<answer fraction="0">
<text>(d)</text>
<feedback>
<text></text>
</feedback>
</answer>
</question>
</quiz>