diff --git a/mxml.c b/mxml.c index be0d8a9..e818d1a 100755 --- a/mxml.c +++ b/mxml.c @@ -1727,7 +1727,10 @@ int mxml_parse_entity(char **buf, char *file_name, char *error, int error_size) /* read external file */ for (i = 0; i < nentity; i++) { if (entity_type[i] == EXTERNAL_ENTITY) { - sprintf(filename, "%s%c%s", directoryname, DIR_SEPARATOR, entity_reference_name[i]); + if ( entity_reference_name[i][0] == DIR_SEPARATOR ) /* absolute path */ + strcpy(filename, entity_reference_name[i]); + else /* relative path */ + sprintf(filename, "%s%c%s", directoryname, DIR_SEPARATOR, entity_reference_name[i]); fh = open(filename, O_RDONLY | O_TEXT, 0644); if (fh == -1) {