Skip to content

Commit b2782c6

Browse files
committed
Merge branch 'PHP-7.0' of git.php.net:/php-src into PHP-7.0
* 'PHP-7.0' of git.php.net:/php-src: Fixed bug #67707 IV not needed for ECB encryption mode, but it returns a warning Fixed #73907 (nextSibling property not included in var_dump of DOMNode) Fixed bug #61858 (DOMAttr debug info generates E_WARNING) Fix glob-wrapper.phpt to not fail in Windows Fix #73893: A hidden danger of death cycle in a function of gd
2 parents 51d4877 + d9cd287 commit b2782c6

File tree

12 files changed

+76
-231
lines changed

12 files changed

+76
-231
lines changed

ext/dom/attr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ Since: DOM Level 3
213213
*/
214214
int dom_attr_schema_type_info_read(dom_object *obj, zval *retval)
215215
{
216-
php_error_docref(NULL, E_WARNING, "Not yet implemented");
216+
/* TODO */
217217
ZVAL_NULL(retval);
218218
return SUCCESS;
219219
}

ext/dom/node.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,8 @@ int dom_node_next_sibling_read(dom_object *obj, zval *retval)
549549

550550
nextsib = nodep->next;
551551
if (!nextsib) {
552-
return FAILURE;
552+
ZVAL_NULL(retval);
553+
return SUCCESS;
553554
}
554555

555556
php_dom_create_object(nextsib, retval, obj);

ext/dom/tests/bug61858.phpt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
--TEST--
2+
Bug #61858 DOMAttr debug info generates E_WARNING
3+
--SKIPIF--
4+
<?php
5+
require_once('skipif.inc');
6+
?>
7+
--FILE--
8+
<?php
9+
$doc = new DOMDocument();
10+
$doc->loadXML('<example a="b">Test</example>');
11+
12+
$example = $doc->getElementsByTagName('example')->item(0);
13+
$attr = $example->getAttributeNode('a');
14+
15+
var_dump($attr);
16+
print_r($attr);
17+
--EXPECTF--
18+
object(DOMAttr)#%d (%d) {
19+
%A
20+
}
21+
DOMAttr Object
22+
(
23+
%A
24+
)

ext/dom/tests/bug69846.phpt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ foreach ($dataNodes AS $node) {
3131
===DONE===
3232
--EXPECTF--
3333
int(3)
34-
object(DOMText)#%d (18) {
34+
object(DOMText)#%d (19) {
3535
["wholeText"]=>
3636
string(3) "
3737
"
@@ -57,6 +57,8 @@ object(DOMText)#%d (18) {
5757
NULL
5858
["previousSibling"]=>
5959
NULL
60+
["nextSibling"]=>
61+
NULL
6062
["attributes"]=>
6163
NULL
6264
["ownerDocument"]=>
@@ -73,7 +75,7 @@ object(DOMText)#%d (18) {
7375
string(3) "
7476
"
7577
}
76-
object(DOMElement)#%d (17) {
78+
object(DOMElement)#%d (18) {
7779
["tagName"]=>
7880
string(5) "form1"
7981
["schemaTypeInfo"]=>
@@ -98,6 +100,8 @@ object(DOMElement)#%d (17) {
98100
string(22) "(object value omitted)"
99101
["previousSibling"]=>
100102
NULL
103+
["nextSibling"]=>
104+
NULL
101105
["attributes"]=>
102106
string(22) "(object value omitted)"
103107
["ownerDocument"]=>
@@ -117,7 +121,7 @@ object(DOMElement)#%d (17) {
117121
Value C
118122
"
119123
}
120-
object(DOMText)#%d (18) {
124+
object(DOMText)#%d (19) {
121125
["wholeText"]=>
122126
string(1) "
123127
"
@@ -143,6 +147,8 @@ object(DOMText)#%d (18) {
143147
NULL
144148
["previousSibling"]=>
145149
NULL
150+
["nextSibling"]=>
151+
NULL
146152
["attributes"]=>
147153
NULL
148154
["ownerDocument"]=>

ext/dom/tests/bug73907.phpt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
--TEST--
2+
Bug #73907 nextSibling property not included in var_dump of DOMNode
3+
--SKIPIF--
4+
<?php require_once('skipif.inc'); ?>
5+
--FILE--
6+
<?php
7+
$xmlString = '<?xml version="1.0" encoding="utf-8" ?>
8+
<root>
9+
</root>';
10+
11+
$doc = new DOMDocument();
12+
$doc->loadXML($xmlString);
13+
$attr = $doc->documentElement;
14+
15+
var_dump($attr);
16+
--EXPECTF--
17+
object(DOMElement)#%d (%d) {%A
18+
["nextSibling"]=>
19+
NULL
20+
%A}

ext/dom/tests/dom_set_attr_node.phpt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,7 @@ object(DOMException)#%d (7) {
6161
["args"]=>
6262
array(1) {
6363
[0]=>
64-
65-
Warning: var_dump(): %s
66-
DOMAttr
64+
DOMAttr
6765
}
6866
}
6967
}

ext/dom/tests/domobject_debug_handler.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ DOMDocument Object
4747
[firstChild] => (object value omitted)
4848
[lastChild] => (object value omitted)
4949
[previousSibling] =>
50+
[nextSibling] =>
5051
[attributes] =>
5152
[ownerDocument] =>
5253
[namespaceURI] =>

ext/gd/libgd/gd.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -693,8 +693,6 @@ void gdImageCopyResampled(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, in
693693
gdImagePtr gdImageRotate90(gdImagePtr src, int ignoretransparent);
694694
gdImagePtr gdImageRotate180(gdImagePtr src, int ignoretransparent);
695695
gdImagePtr gdImageRotate270(gdImagePtr src, int ignoretransparent);
696-
gdImagePtr gdImageRotate45(gdImagePtr src, double dAngle, int clrBack, int ignoretransparent);
697-
gdImagePtr gdImageRotate (gdImagePtr src, double dAngle, int clrBack, int ignoretransparent);
698696
gdImagePtr gdImageRotateInterpolated(const gdImagePtr src, const float angle, int bgcolor);
699697

700698
void gdImageSetBrush(gdImagePtr im, gdImagePtr brush);

ext/gd/libgd/gd_rotate.c

Lines changed: 0 additions & 215 deletions
Original file line numberDiff line numberDiff line change
@@ -343,218 +343,3 @@ gdImagePtr gdImageRotate270 (gdImagePtr src, int ignoretransparent)
343343

344344
return dst;
345345
}
346-
347-
gdImagePtr gdImageRotate45 (gdImagePtr src, double dAngle, int clrBack, int ignoretransparent)
348-
{
349-
typedef int (*FuncPtr)(gdImagePtr, int, int);
350-
gdImagePtr dst1,dst2,dst3;
351-
FuncPtr f;
352-
double dRadAngle, dSinE, dTan, dShear;
353-
double dOffset; /* Variable skew offset */
354-
int u, iShear, newx, newy;
355-
int clrBackR, clrBackG, clrBackB, clrBackA;
356-
357-
/* See GEMS I for the algorithm details */
358-
dRadAngle = dAngle * ROTATE_DEG2RAD; /* Angle in radians */
359-
dSinE = sin (dRadAngle);
360-
dTan = tan (dRadAngle / 2.0);
361-
362-
newx = (int)(src->sx + src->sy * fabs(dTan));
363-
newy = src->sy;
364-
365-
/* 1st shear */
366-
if (src->trueColor) {
367-
f = gdImageGetTrueColorPixel;
368-
} else {
369-
f = gdImageGetPixel;
370-
}
371-
372-
dst1 = gdImageCreateTrueColor(newx, newy);
373-
/******* Perform 1st shear (horizontal) ******/
374-
if (dst1 == NULL) {
375-
return NULL;
376-
}
377-
#ifdef HAVE_GD_BUNDLED
378-
dst1->alphaBlendingFlag = gdEffectReplace;
379-
#else
380-
gdImageAlphaBlending(dst1, 0);
381-
#endif
382-
if (dAngle == 0.0) {
383-
/* Returns copy of src */
384-
gdImageCopy (dst1, src,0,0,0,0,src->sx,src->sy);
385-
return dst1;
386-
}
387-
388-
gdImagePaletteCopy (dst1, src);
389-
390-
if (ignoretransparent) {
391-
if (gdImageTrueColor(src)) {
392-
dst1->transparent = src->transparent;
393-
} else {
394-
395-
dst1->transparent = gdTrueColorAlpha(gdImageRed(src, src->transparent), gdImageBlue(src, src->transparent), gdImageGreen(src, src->transparent), 127);
396-
}
397-
}
398-
399-
dRadAngle = dAngle * ROTATE_DEG2RAD; /* Angle in radians */
400-
dSinE = sin (dRadAngle);
401-
dTan = tan (dRadAngle / 2.0);
402-
403-
for (u = 0; u < dst1->sy; u++) {
404-
if (dTan >= 0.0) {
405-
dShear = ((double)(u + 0.5)) * dTan;
406-
} else {
407-
dShear = ((double)(u - dst1->sy) + 0.5) * dTan;
408-
}
409-
410-
iShear = (int)floor(dShear);
411-
gdImageSkewX(dst1, src, u, iShear, (dShear - iShear), clrBack, ignoretransparent);
412-
}
413-
414-
/*
415-
The 1st shear may use the original clrBack as color index
416-
Convert it once here
417-
*/
418-
if(!src->trueColor) {
419-
clrBackR = gdImageRed(src, clrBack);
420-
clrBackG = gdImageGreen(src, clrBack);
421-
clrBackB = gdImageBlue(src, clrBack);
422-
clrBackA = gdImageAlpha(src, clrBack);
423-
clrBack = gdTrueColorAlpha(clrBackR, clrBackG, clrBackB, clrBackA);
424-
}
425-
/* 2nd shear */
426-
newx = dst1->sx;
427-
428-
if (dSinE > 0.0) {
429-
dOffset = (src->sx-1) * dSinE;
430-
} else {
431-
dOffset = -dSinE * (src->sx - newx);
432-
}
433-
434-
newy = (int) ((double) src->sx * fabs( dSinE ) + (double) src->sy * cos (dRadAngle))+1;
435-
436-
if (src->trueColor) {
437-
f = gdImageGetTrueColorPixel;
438-
} else {
439-
f = gdImageGetPixel;
440-
}
441-
dst2 = gdImageCreateTrueColor(newx, newy);
442-
if (dst2 == NULL) {
443-
gdImageDestroy(dst1);
444-
return NULL;
445-
}
446-
447-
#ifdef HAVE_GD_BUNDLED
448-
dst2->alphaBlendingFlag = gdEffectReplace;
449-
#else
450-
gdImageAlphaBlending(dst2, 0);
451-
#endif
452-
453-
if (ignoretransparent) {
454-
dst2->transparent = dst1->transparent;
455-
}
456-
457-
for (u = 0; u < dst2->sx; u++, dOffset -= dSinE) {
458-
iShear = (int)floor (dOffset);
459-
gdImageSkewY(dst2, dst1, u, iShear, (dOffset - (double)iShear), clrBack, ignoretransparent);
460-
}
461-
462-
/* 3rd shear */
463-
gdImageDestroy(dst1);
464-
465-
newx = (int) ((double)src->sy * fabs (dSinE) + (double)src->sx * cos (dRadAngle)) + 1;
466-
newy = dst2->sy;
467-
468-
if (src->trueColor) {
469-
f = gdImageGetTrueColorPixel;
470-
} else {
471-
f = gdImageGetPixel;
472-
}
473-
dst3 = gdImageCreateTrueColor(newx, newy);
474-
if (dst3 == NULL) {
475-
gdImageDestroy(dst2);
476-
return NULL;
477-
}
478-
479-
#ifdef HAVE_GD_BUNDLED
480-
dst3->alphaBlendingFlag = gdEffectReplace;
481-
#else
482-
gdImageAlphaBlending(dst3, 0);
483-
#endif
484-
485-
if (ignoretransparent) {
486-
dst3->transparent = dst2->transparent;
487-
}
488-
489-
if (dSinE >= 0.0) {
490-
dOffset = (double)(src->sx - 1) * dSinE * -dTan;
491-
} else {
492-
dOffset = dTan * ((double)(src->sx - 1) * -dSinE + (double)(1 - newy));
493-
}
494-
495-
for (u = 0; u < dst3->sy; u++, dOffset += dTan) {
496-
int iShear = (int)floor(dOffset);
497-
gdImageSkewX(dst3, dst2, u, iShear, (dOffset - iShear), clrBack, ignoretransparent);
498-
}
499-
500-
gdImageDestroy(dst2);
501-
502-
return dst3;
503-
}
504-
505-
gdImagePtr gdImageRotate (gdImagePtr src, double dAngle, int clrBack, int ignoretransparent)
506-
{
507-
gdImagePtr pMidImg;
508-
gdImagePtr rotatedImg;
509-
510-
if (src == NULL) {
511-
return NULL;
512-
}
513-
514-
if (!gdImageTrueColor(src) && (clrBack < 0 || clrBack>=gdImageColorsTotal(src))) {
515-
return NULL;
516-
}
517-
518-
while (dAngle >= 360.0) {
519-
dAngle -= 360.0;
520-
}
521-
522-
while (dAngle < 0) {
523-
dAngle += 360.0;
524-
}
525-
526-
if (dAngle == 90.00) {
527-
return gdImageRotate90(src, ignoretransparent);
528-
}
529-
if (dAngle == 180.00) {
530-
return gdImageRotate180(src, ignoretransparent);
531-
}
532-
if(dAngle == 270.00) {
533-
return gdImageRotate270 (src, ignoretransparent);
534-
}
535-
536-
if ((dAngle > 45.0) && (dAngle <= 135.0)) {
537-
pMidImg = gdImageRotate90 (src, ignoretransparent);
538-
dAngle -= 90.0;
539-
} else if ((dAngle > 135.0) && (dAngle <= 225.0)) {
540-
pMidImg = gdImageRotate180 (src, ignoretransparent);
541-
dAngle -= 180.0;
542-
} else if ((dAngle > 225.0) && (dAngle <= 315.0)) {
543-
pMidImg = gdImageRotate270 (src, ignoretransparent);
544-
dAngle -= 270.0;
545-
} else {
546-
return gdImageRotate45 (src, dAngle, clrBack, ignoretransparent);
547-
}
548-
549-
if (pMidImg == NULL) {
550-
return NULL;
551-
}
552-
553-
rotatedImg = gdImageRotate45 (pMidImg, dAngle, clrBack, ignoretransparent);
554-
gdImageDestroy(pMidImg);
555-
556-
return rotatedImg;
557-
}
558-
/* End Rotate function */
559-
560-

ext/mcrypt/mcrypt.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,9 @@ PHP_FUNCTION(mcrypt_generic_init)
572572
memcpy(key_s, key, key_len);
573573

574574
if (iv_len != iv_size) {
575-
php_error_docref(NULL, E_WARNING, "Iv size incorrect; supplied length: %zd, needed: %d", iv_len, iv_size);
575+
if (mcrypt_enc_mode_has_iv(pm->td)) {
576+
php_error_docref(NULL, E_WARNING, "Iv size incorrect; supplied length: %zd, needed: %d", iv_len, iv_size);
577+
}
576578
if (iv_len > iv_size) {
577579
iv_len = iv_size;
578580
}

ext/mcrypt/tests/bug67707.phpt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
--TEST--
2+
Bug #67707 IV not needed for ECB encryption mode, but it returns a warning
3+
--SKIPIF--
4+
<?php if (!extension_loaded("mcrypt")) print "skip"; ?>
5+
--FILE--
6+
<?php
7+
$td = mcrypt_module_open('rijndael-256', '', 'ecb', '');
8+
mcrypt_generic_init($td, 'secret key', NULL);
9+
?>
10+
--EXPECTF--

0 commit comments

Comments
 (0)