blob: 74925c123268499992617e74915963ad0fe0b7aa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
<?php
namespace Safe;
use Safe\Exceptions\LibxmlException;
/**
* Retrieve last error from libxml.
*
* @return \LibXMLError Returns a LibXMLError object if there is any error in the
* buffer, FALSE otherwise.
* @throws LibxmlException
*
*/
function libxml_get_last_error(): \LibXMLError
{
error_clear_last();
$result = \libxml_get_last_error();
if ($result === false) {
throw LibxmlException::createFromPhpError();
}
return $result;
}
/**
* Changes the default external entity loader.
* This can be used to suppress the expansion of arbitrary external entities to avoid XXE attacks,
* even when LIBXML_NOENT has been set for the respective operation,
* and is usually preferable over calling libxml_disable_entity_loader.
*
* @param callable $resolver_function A callable with the following signature:
*
* resourcestringnullresolver
* stringpublic_id
* stringsystem_id
* arraycontext
*
*
*
* public_id
*
*
* The public ID.
*
*
*
*
* system_id
*
*
* The system ID.
*
*
*
*
* context
*
*
* An array with the four elements "directory", "intSubName",
* "extSubURI" and "extSubSystem".
*
*
*
*
* This callable should return a resource, a string from which a resource can be
* opened. If NULL is returned, the entity reference resolution will fail.
* @throws LibxmlException
*
*/
function libxml_set_external_entity_loader(callable $resolver_function): void
{
error_clear_last();
$result = \libxml_set_external_entity_loader($resolver_function);
if ($result === false) {
throw LibxmlException::createFromPhpError();
}
}
|