@@ -187,8 +187,8 @@ PHP_METHOD(domelement, __construct)
187
187
php_std_error_handling ();
188
188
return ;
189
189
}
190
-
191
190
php_std_error_handling ();
191
+
192
192
name_valid = xmlValidateName ((xmlChar * ) name , 0 );
193
193
if (name_valid != 0 ) {
194
194
php_dom_throw_error (INVALID_CHARACTER_ERR , 1 TSRMLS_CC );
@@ -270,7 +270,7 @@ int dom_element_tag_name_read(dom_object *obj, zval **retval TSRMLS_DC)
270
270
ns = nodep -> ns ;
271
271
if (ns != NULL && ns -> prefix ) {
272
272
qname = xmlStrdup (ns -> prefix );
273
- qname = xmlStrcat (qname , ":" );
273
+ qname = xmlStrcat (qname , ( xmlChar * ) ":" );
274
274
qname = xmlStrcat (qname , nodep -> name );
275
275
ZVAL_STRING (* retval , (char * )qname , 1 );
276
276
xmlFree (qname );
@@ -307,7 +307,7 @@ static xmlNodePtr dom_get_dom1_attribute(xmlNodePtr elem, xmlChar *name) {
307
307
if (nqname != NULL ) {
308
308
xmlNsPtr ns ;
309
309
xmlChar * prefix = xmlStrndup (name , len );
310
- if (prefix && xmlStrEqual (prefix , "xmlns" )) {
310
+ if (prefix && xmlStrEqual (prefix , ( xmlChar * ) "xmlns" )) {
311
311
ns = elem -> nsDef ;
312
312
while (ns ) {
313
313
if (xmlStrEqual (ns -> prefix , nqname )) {
@@ -326,7 +326,7 @@ static xmlNodePtr dom_get_dom1_attribute(xmlNodePtr elem, xmlChar *name) {
326
326
return (xmlNodePtr )xmlHasNsProp (elem , nqname , ns -> href );
327
327
}
328
328
} else {
329
- if (xmlStrEqual (name , "xmlns" )) {
329
+ if (xmlStrEqual (name , ( xmlChar * ) "xmlns" )) {
330
330
xmlNsPtr nsPtr = elem -> nsDef ;
331
331
while (nsPtr ) {
332
332
if (nsPtr -> prefix == NULL ) {
@@ -348,7 +348,8 @@ PHP_FUNCTION(dom_element_get_attribute)
348
348
{
349
349
zval * id ;
350
350
xmlNode * nodep ;
351
- char * name , * value = NULL ;
351
+ char * name ;
352
+ xmlChar * value = NULL ;
352
353
dom_object * intern ;
353
354
xmlNodePtr attr ;
354
355
int name_len ;
@@ -363,20 +364,20 @@ PHP_FUNCTION(dom_element_get_attribute)
363
364
if (attr ) {
364
365
switch (attr -> type ) {
365
366
case XML_ATTRIBUTE_NODE :
366
- value = xmlNodeListGetString (attr -> doc , attr -> children , 1 );
367
+ value = xmlNodeListGetString (attr -> doc , attr -> children , 1 );
367
368
break ;
368
369
case XML_NAMESPACE_DECL :
369
370
value = xmlStrdup (((xmlNsPtr )attr )-> href );
370
371
break ;
371
372
default :
372
- value = xmlStrdup (((xmlAttributePtr )attr )-> defaultValue );
373
+ value = xmlStrdup (((xmlAttributePtr )attr )-> defaultValue );
373
374
}
374
375
}
375
376
376
377
if (value == NULL ) {
377
378
RETURN_EMPTY_STRING ();
378
379
} else {
379
- RETVAL_STRING (value , 1 );
380
+ RETVAL_STRING (( char * ) value , 1 );
380
381
xmlFree (value );
381
382
}
382
383
}
@@ -392,7 +393,7 @@ PHP_FUNCTION(dom_element_set_attribute)
392
393
zval * id , * rv = NULL ;
393
394
xmlNode * nodep ;
394
395
xmlNodePtr attr = NULL ;
395
- int ret , name_len , value_len ;
396
+ int ret , name_len , value_len , name_valid ;
396
397
dom_object * intern ;
397
398
char * name , * value ;
398
399
@@ -405,6 +406,12 @@ PHP_FUNCTION(dom_element_set_attribute)
405
406
RETURN_FALSE ;
406
407
}
407
408
409
+ name_valid = xmlValidateName ((xmlChar * ) name , 0 );
410
+ if (name_valid != 0 ) {
411
+ php_dom_throw_error (INVALID_CHARACTER_ERR , 1 TSRMLS_CC );
412
+ RETURN_FALSE ;
413
+ }
414
+
408
415
DOM_GET_OBJ (nodep , id , xmlNodePtr , intern );
409
416
410
417
if (dom_node_is_read_only (nodep ) == SUCCESS ) {
@@ -416,7 +423,7 @@ PHP_FUNCTION(dom_element_set_attribute)
416
423
if (attr != NULL ) {
417
424
switch (attr -> type ) {
418
425
case XML_ATTRIBUTE_NODE :
419
- node_list_unlink (attr -> children TSRMLS_CC );
426
+ node_list_unlink (attr -> children TSRMLS_CC );
420
427
break ;
421
428
case XML_NAMESPACE_DECL :
422
429
RETURN_FALSE ;
@@ -426,12 +433,12 @@ PHP_FUNCTION(dom_element_set_attribute)
426
433
427
434
}
428
435
429
- if (xmlStrEqual ((xmlChar * )name , "xmlns" )) {
436
+ if (xmlStrEqual ((xmlChar * )name , ( xmlChar * ) "xmlns" )) {
430
437
if (xmlNewNs (nodep , (xmlChar * )value , NULL )) {
431
438
RETURN_TRUE ;
432
439
}
433
440
} else {
434
- attr = (xmlNodePtr )xmlSetProp (nodep , (xmlChar * ) name , value );
441
+ attr = (xmlNodePtr )xmlSetProp (nodep , (xmlChar * ) name , ( xmlChar * ) value );
435
442
}
436
443
if (!attr ) {
437
444
php_error_docref (NULL TSRMLS_CC , E_WARNING , "No such attribute '%s'" , name );
@@ -528,7 +535,7 @@ PHP_FUNCTION(dom_element_get_attribute_node)
528
535
if (attrp -> children ) {
529
536
attrp = xmlNewDocNode (nodep -> doc , NULL , (xmlChar * ) attrp -> children , attrp -> name );
530
537
} else {
531
- attrp = xmlNewDocNode (nodep -> doc , NULL , "xmlns" , attrp -> name );
538
+ attrp = xmlNewDocNode (nodep -> doc , NULL , ( xmlChar * ) "xmlns" , attrp -> name );
532
539
}
533
540
attrp -> type = XML_NAMESPACE_DECL ;
534
541
attrp -> parent = nsparent ;
@@ -679,7 +686,8 @@ PHP_FUNCTION(dom_element_get_attribute_ns)
679
686
xmlNsPtr nsptr ;
680
687
dom_object * intern ;
681
688
int uri_len = 0 , name_len = 0 ;
682
- char * uri , * name , * strattr ;
689
+ char * uri , * name ;
690
+ xmlChar * strattr ;
683
691
684
692
if (zend_parse_method_parameters (ZEND_NUM_ARGS () TSRMLS_CC , getThis (), "Os!s" , & id , dom_element_class_entry , & uri , & uri_len , & name , & name_len ) == FAILURE ) {
685
693
return ;
@@ -690,11 +698,11 @@ PHP_FUNCTION(dom_element_get_attribute_ns)
690
698
strattr = xmlGetNsProp (elemp , (xmlChar * ) name , (xmlChar * ) uri );
691
699
692
700
if (strattr != NULL ) {
693
- RETVAL_STRING (strattr , 1 );
701
+ RETVAL_STRING (( char * ) strattr , 1 );
694
702
xmlFree (strattr );
695
703
} else {
696
- if (xmlStrEqual ((xmlChar * ) uri , DOM_XMLNS_NAMESPACE )) {
697
- nsptr = dom_get_nsdecl (elemp , name );
704
+ if (xmlStrEqual ((xmlChar * ) uri , ( xmlChar * ) DOM_XMLNS_NAMESPACE )) {
705
+ nsptr = dom_get_nsdecl (elemp , ( xmlChar * ) name );
698
706
if (nsptr != NULL ) {
699
707
RETVAL_STRING ((char * ) nsptr -> href , 1 );
700
708
} else {
@@ -759,7 +767,7 @@ PHP_FUNCTION(dom_element_set_attribute_ns)
759
767
char * uri , * name , * value ;
760
768
char * localname = NULL , * prefix = NULL ;
761
769
dom_object * intern ;
762
- int errorcode = 0 , stricterror , is_xmlns = 0 ;
770
+ int errorcode = 0 , stricterror , is_xmlns = 0 , name_valid ;
763
771
764
772
if (zend_parse_method_parameters (ZEND_NUM_ARGS () TSRMLS_CC , getThis (), "Os!ss" , & id , dom_element_class_entry , & uri , & uri_len , & name , & name_len , & value , & value_len ) == FAILURE ) {
765
773
return ;
@@ -788,11 +796,11 @@ PHP_FUNCTION(dom_element_set_attribute_ns)
788
796
node_list_unlink (nodep -> children TSRMLS_CC );
789
797
}
790
798
791
- if (xmlStrEqual ((xmlChar * ) prefix ,"xmlns" ) && xmlStrEqual ((xmlChar * ) uri , DOM_XMLNS_NAMESPACE )) {
799
+ if (xmlStrEqual ((xmlChar * ) prefix , ( xmlChar * ) "xmlns" ) && xmlStrEqual ((xmlChar * ) uri , ( xmlChar * ) DOM_XMLNS_NAMESPACE )) {
792
800
is_xmlns = 1 ;
793
- nsptr = dom_get_nsdecl (elemp , localname );
801
+ nsptr = dom_get_nsdecl (elemp , ( xmlChar * ) localname );
794
802
} else {
795
- nsptr = xmlSearchNsByHref (elemp -> doc , elemp , uri );
803
+ nsptr = xmlSearchNsByHref (elemp -> doc , elemp , ( xmlChar * ) uri );
796
804
if (nsptr && nsptr -> prefix == NULL ) {
797
805
xmlNsPtr tmpnsptr ;
798
806
@@ -816,7 +824,7 @@ PHP_FUNCTION(dom_element_set_attribute_ns)
816
824
errorcode = NAMESPACE_ERR ;
817
825
} else {
818
826
if (is_xmlns == 1 ) {
819
- xmlNewNs (elemp , value , localname );
827
+ xmlNewNs (elemp , ( xmlChar * ) value , ( xmlChar * ) localname );
820
828
} else {
821
829
nsptr = dom_get_ns (elemp , uri , & errorcode , prefix );
822
830
}
@@ -827,19 +835,25 @@ PHP_FUNCTION(dom_element_set_attribute_ns)
827
835
if (nsptr -> href ) {
828
836
xmlFree ((xmlChar * ) nsptr -> href );
829
837
}
830
- nsptr -> href = xmlStrdup (value );
838
+ nsptr -> href = xmlStrdup (( xmlChar * ) value );
831
839
}
832
840
}
833
841
834
842
if (errorcode == 0 && is_xmlns == 0 ) {
835
- attr = xmlSetNsProp (elemp , nsptr , localname , value );
843
+ attr = xmlSetNsProp (elemp , nsptr , ( xmlChar * ) localname , ( xmlChar * ) value );
836
844
}
837
845
} else {
838
- attr = xmlHasProp (elemp , localname );
839
- if (attr != NULL && attr -> type != XML_ATTRIBUTE_DECL ) {
840
- node_list_unlink (attr -> children TSRMLS_CC );
846
+ name_valid = xmlValidateName ((xmlChar * ) localname , 0 );
847
+ if (name_valid != 0 ) {
848
+ errorcode = INVALID_CHARACTER_ERR ;
849
+ stricterror = 1 ;
850
+ } else {
851
+ attr = xmlHasProp (elemp , (xmlChar * )localname );
852
+ if (attr != NULL && attr -> type != XML_ATTRIBUTE_DECL ) {
853
+ node_list_unlink (attr -> children TSRMLS_CC );
854
+ }
855
+ attr = xmlSetProp (elemp , (xmlChar * )localname , (xmlChar * )value );
841
856
}
842
- attr = xmlSetProp (elemp , localname , value );
843
857
}
844
858
}
845
859
@@ -934,7 +948,7 @@ PHP_FUNCTION(dom_element_get_attribute_node_ns)
934
948
935
949
DOM_GET_OBJ (elemp , id , xmlNodePtr , intern );
936
950
937
- attrp = xmlHasNsProp (elemp , name , uri );
951
+ attrp = xmlHasNsProp (elemp , ( xmlChar * ) name , ( xmlChar * ) uri );
938
952
939
953
if (attrp == NULL ) {
940
954
RETURN_NULL ();
@@ -1101,8 +1115,8 @@ PHP_FUNCTION(dom_element_has_attribute_ns)
1101
1115
xmlFree (value );
1102
1116
RETURN_TRUE ;
1103
1117
} else {
1104
- if (xmlStrEqual (uri , DOM_XMLNS_NAMESPACE )) {
1105
- nsp = dom_get_nsdecl (elemp , name );
1118
+ if (xmlStrEqual (( xmlChar * ) uri , ( xmlChar * ) DOM_XMLNS_NAMESPACE )) {
1119
+ nsp = dom_get_nsdecl (elemp , ( xmlChar * ) name );
1106
1120
if (nsp != NULL ) {
1107
1121
RETURN_TRUE ;
1108
1122
}
@@ -1157,7 +1171,7 @@ PHP_FUNCTION(dom_element_set_id_attribute)
1157
1171
RETURN_NULL ();
1158
1172
}
1159
1173
1160
- attrp = xmlHasNsProp (nodep , name , NULL );
1174
+ attrp = xmlHasNsProp (nodep , ( xmlChar * ) name , NULL );
1161
1175
if (attrp == NULL || attrp -> type == XML_ATTRIBUTE_DECL ) {
1162
1176
php_dom_throw_error (NOT_FOUND_ERR , dom_get_strict_error (intern -> document ) TSRMLS_CC );
1163
1177
} else {
0 commit comments