mdl_name is just a string pointer.
You need str_create() as file_str_read() will not create the string for you, but just copy into it. So at the moment you're reading to anywhere, but surely not to a string.

Code:
STRING* mdl_name = str_create("");
(...)
file_str_read(fhandle, mdl_name);
(...)