diff options
| author | Remi Collet <remi@remirepo.net> | 2020-03-24 08:57:03 +0100 | 
|---|---|---|
| committer | Remi Collet <remi@remirepo.net> | 2020-03-24 08:57:03 +0100 | 
| commit | 836bcc2a2746d3475ad570bce00fc8fc367c9092 (patch) | |
| tree | dcd724ca636b4adb7d56465a0122e6483ff3916c | |
| parent | 040a65cbe4187bc82f19f8bff794a096a46b6f30 (diff) | |
update to 2.3.0
add dependency on libraqm
remove gdlib-config
| -rw-r--r-- | compat_reports/2.2.5-2_to_2.3.0/compat_report.html | 662 | ||||
| -rw-r--r-- | gd-2.1.0-multilib.patch | 33 | ||||
| -rw-r--r-- | gd-2.2.5-gdImageBmpPtr-double-free.patch | 73 | ||||
| -rw-r--r-- | gd-2.2.5-heap-based-buffer-overflow.patch | 28 | ||||
| -rw-r--r-- | gd-2.2.5-potential-double-free.patch | 283 | ||||
| -rw-r--r-- | gd-2.2.5-upstream.patch | 62 | ||||
| -rw-r--r-- | gd.spec | 45 | ||||
| -rw-r--r-- | getlib.sh | 42 | 
8 files changed, 730 insertions, 498 deletions
diff --git a/compat_reports/2.2.5-2_to_2.3.0/compat_report.html b/compat_reports/2.2.5-2_to_2.3.0/compat_report.html new file mode 100644 index 0000000..7ee56a7 --- /dev/null +++ b/compat_reports/2.2.5-2_to_2.3.0/compat_report.html @@ -0,0 +1,662 @@ +<!-- kind:binary;verdict:compatible;affected:0;added:0;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:6;changed_constants:0;tool_version:2.3 --> +<!-- kind:source;verdict:compatible;affected:0;added:0;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:4;tool_version:2.3 --> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<meta name="viewport" content="width=device-width,initial-scale=1" /> +<meta name="keywords" content="libgd, compatibility, API, ABI, report" /> +<meta name="description" content="API/ABI compatibility report for the libgd library between 2.2.5-2 and 2.3.0 versions" /> +<title>libgd: 2.2.5-2 to 2.3.0 compatibility report</title> +<style type="text/css"> +body { +    font-family:Arial, sans-serif; +    background-color:White; +    color:Black; +} +hr { +    color:Black; +    background-color:Black; +    height:1px; +    border:0; +} +h1 { +    margin-bottom:0px; +    padding-bottom:0px; +    font-size:1.625em; +} +h2 { +    margin-bottom:0px; +    padding-bottom:0px; +    font-size:1.25em; +    white-space:nowrap; +} +span.section { +    font-weight:bold; +    cursor:pointer; +    color:#003E69; +    white-space:nowrap; +    margin-left:0.3125em; +} +span.new_sign { +    font-weight:bold; +    margin-left:1.65em; +    color:#003E69; +} +span.new_sign_lbl { +    margin-left:3em; +    font-size:1em; +    color:Black; +} +span:hover.section { +    color:#336699; +} +span.sect_aff { +    cursor:pointer; +    padding-left:1.55em; +    font-size:0.875em; +    color:#cc3300; +} +span.sect_info { +    cursor:pointer; +    padding-left:1.55em; +    font-size:0.875em; +    color:Black; +} +span.ext { +    font-weight:normal; +} +span.h_name { +    color:#cc3300; +    font-size:0.875em; +    font-weight:bold; +} +div.h_list, div.lib_list { +    font-size:0.94em; +    padding-left:0.4em; +} +span.ns { +    color:#408080; +    font-size:0.94em; +} +span.lib_name { +    color:Green; +    font-size:0.875em; +    font-weight:bold; +} +span.iname { +    font-weight:bold; +    color:#003E69; +    margin-left:0.3125em; +} +span.iname_b { +    font-weight:bold; +} +span.iname_a { +    color:#333333; +    font-weight:bold; +    font-size:0.94em; +} +span.sym_p { +    font-weight:normal; +    white-space:normal; +} +span.sym_pd { +    white-space:normal; +} +span.sym_p span, span.sym_pd span { +    white-space:nowrap; +} +div.affect { +    padding-left:1em; +    padding-bottom:10px; +    font-size:0.87em; +    font-style:italic; +    line-height:0.9em; +} +div.affected { +    padding-left:1.9em; +    padding-top:10px; +} +table.ptable { +    border-collapse:collapse; +    border:1px outset black; +    margin-left:0.95em; +    margin-top:3px; +    margin-bottom:3px; +    width:56.25em; +} +table.ptable td { +    border:1px solid gray; +    padding:3px; +    font-size:0.875em; +    text-align:left; +    vertical-align:top; +    max-width:28em; +    word-wrap:break-word; +} +table.ptable th.pn { +    width:2%; +} +table.ptable th.chg { +    width:47%; +} +table.vtable { +    border-collapse:collapse; +    border:1px outset black; +    margin-left:1.9em; +    margin-top:0.7em; +} +table.vtable td { +    border:1px solid gray; +    padding:3px; +    font-size:0.875em; +    vertical-align:top; +    max-width:450px; +    word-wrap:break-word; +} +table.ptable th, table.vtable th { +    background-color:#eeeeee; +    font-weight:bold; +    color:#333333; +    font-family:Verdana, Arial; +    font-size:0.875em; +    border:1px solid gray; +    text-align:center; +    vertical-align:top; +    white-space:nowrap; +    padding:3px; +} +table.summary { +    border-collapse:collapse; +    border:1px outset black; +} +table.summary th { +    background-color:#eeeeee; +    font-weight:normal; +    text-align:left; +    font-size:0.94em; +    white-space:nowrap; +    border:1px inset gray; +    padding:3px; +} +table.summary td { +    text-align:right; +    white-space:nowrap; +    border:1px inset gray; +    padding:3px 5px 3px 10px; +} +span.mngl { +    padding-left:1em; +    font-size:0.875em; +    cursor:text; +    color:#444444; +    font-weight:bold; +} +span.pleft { +    padding-left:2.5em; +} +span.sym_ver { +    color:#333333; +    white-space:nowrap; +    font-family:"DejaVu Sans Mono", Monospace; +} +span.attr { +    color:#333333; +    font-weight:normal; +} +span.color_p { +    font-style:italic; +    color:Brown; +} +span.p { +    font-style:italic; +} +span.fp { +    font-style:italic; +    background-color:#DCDCDC; +} +span.ttype { +    font-weight:normal; +} +span.nowrap { +    white-space:nowrap; +} +span.value { +    font-weight:bold; +} +.passed { +    background-color:#CCFFCC; +    font-weight:normal; +} +.warning { +    background-color:#F4F4AF; +    font-weight:normal; +} +.failed { +    background-color:#FFCCCC; +    font-weight:normal; +} +.new { +    background-color:#C6DEFF; +    font-weight:normal; +} +.compatible { +    background-color:#CCFFCC; +    font-weight:normal; +} +.almost_compatible { +    background-color:#FFDAA3; +    font-weight:normal; +} +.incompatible { +    background-color:#FFCCCC; +    font-weight:normal; +} +.gray { +    background-color:#DCDCDC; +    font-weight:normal; +} +.top_ref { +    font-size:0.69em; +} +.footer { +    font-size:0.75em; +} + +.tabset { +    float:left; +} +a.tab { +    border:1px solid Black; +    float:left; +    margin:0px 5px -1px 0px; +    padding:3px 5px 3px 5px; +    position:relative; +    font-size:0.875em; +    background-color:#DDD; +    text-decoration:none; +    color:Black; +} +a.disabled:hover +{ +    color:Black; +    background:#EEE; +} +a.active:hover +{ +    color:Black; +    background:White; +} +a.active { +    border-bottom-color:White; +    background-color:White; +} +div.tab { +    border-top:1px solid Black; +    padding:0px; +    width:100%; +    clear:both; +} +</style> +<script type="text/javascript" language="JavaScript"> +<!-- +function showContent(header, id) +{ +    e = document.getElementById(id); +    if(e.style.display == 'none') +    { +        e.style.display = 'block'; +        e.style.visibility = 'visible'; +        header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi,"[−]"); +    } +    else +    { +        e.style.display = 'none'; +        e.style.visibility = 'hidden'; +        header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi,"[+]"); +    } +} +function initTabs() +{ +    var url = window.location.href; +    if(url.indexOf('_Source_')!=-1 || url.indexOf('#Source')!=-1) +    { +        var tab1 = document.getElementById('BinaryID'); +        var tab2 = document.getElementById('SourceID'); +        tab1.className='tab disabled'; +        tab2.className='tab active'; +    } +    var sets = document.getElementsByTagName('div'); +    for (var i = 0; i < sets.length; i++) +    { +        if (sets[i].className.indexOf('tabset') != -1) +        { +            var tabs = []; +            var links = sets[i].getElementsByTagName('a'); +            for (var j = 0; j < links.length; j++) +            { +                if (links[j].className.indexOf('tab') != -1) +                { +                    tabs.push(links[j]); +                    links[j].tabs = tabs; +                    var tab = document.getElementById(links[j].href.substr(links[j].href.indexOf('#') + 1)); +                    //reset all tabs on start +                    if (tab) +                    { +                        if (links[j].className.indexOf('active')!=-1) { +                            tab.style.display = 'block'; +                        } +                        else { +                            tab.style.display = 'none'; +                        } +                    } +                    links[j].onclick = function() +                    { +                        var tab = document.getElementById(this.href.substr(this.href.indexOf('#') + 1)); +                        if (tab) +                        { +                            //reset all tabs before change +                            for (var k = 0; k < this.tabs.length; k++) +                            { +                                document.getElementById(this.tabs[k].href.substr(this.tabs[k].href.indexOf('#') + 1)).style.display = 'none'; +                                this.tabs[k].className = this.tabs[k].className.replace('active', 'disabled'); +                            } +                            this.className = 'tab active'; +                            tab.style.display = 'block'; +                            // window.location.hash = this.id.replace('ID', ''); +                            return false; +                        } +                    } +                } +            } +        } +    } +    if(url.indexOf('#')!=-1) { +        location.href=location.href; +    } +} +if (window.addEventListener) window.addEventListener('load', initTabs, false); +else if (window.attachEvent) window.attachEvent('onload', initTabs); +--> +</script> +</head> +<body><a name='Source'></a><a name='Binary'></a><a name='Top'></a><h1>API compatibility report for the <span style='color:Blue;'>libgd</span> library between <span style='color:Red;'>2.2.5-2</span> and <span style='color:Red;'>2.3.0</span> versions on <span style='color:Blue;'>x86_64</span></h1> + +            <br/> +            <div class='tabset'> +            <a id='BinaryID' href='#BinaryTab' class='tab active'>Binary<br/>Compatibility</a> +            <a id='SourceID' href='#SourceTab' style='margin-left:3px' class='tab disabled'>Source<br/>Compatibility</a> +            </div><div id='BinaryTab' class='tab'> +<h2>Test Info</h2><hr/> +<table class='summary'> +<tr><th>Library Name</th><td>libgd</td></tr> +<tr><th>Version #1</th><td>2.2.5-2</td></tr> +<tr><th>Version #2</th><td>2.3.0</td></tr> +<tr><th>Arch</th><td>x86_64</td></tr> +<tr><th>GCC Version</th><td>9</td></tr> +<tr><th>Subject</th><td width='150px'>Binary Compatibility</td></tr> +</table> +<h2>Test Results</h2><hr/> +<table class='summary'><tr><th>Total Header Files</th><td><a href='#Headers' style='color:Blue;'>10</a></td></tr> +<tr><th>Total Libraries</th><td><a href='#Libs' style='color:Blue;'>1</a></td></tr> +<tr><th>Total Symbols / Types</th><td>240 / 58</td></tr> +<tr><th>Compatibility</th> +<td class='compatible'>100%</td> +</tr> +</table> +<h2>Problem Summary</h2><hr/> +<table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td>0</td></tr> +<tr><th>Removed Symbols</th><td>High</td><td>0</td></tr> +<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr> +<tr><td>Medium</td><td>0</td></tr> +<tr><td>Low</td><td>0</td></tr> +<tr><th rowspan='3'>Problems with<br/>Symbols</th><td>High</td><td>0</td></tr> +<tr><td>Medium</td><td>0</td></tr> +<tr><td>Low</td><td class='warning'><a href='#Symbol_Binary_Problems_Low' style='color:Blue;'>6</a></td></tr> +<tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr> +</table> + +<a name='Low_Risk_Binary_Problems'></a><a name='Symbol_Binary_Problems_Low'></a><a name='Interface_Binary_Problems_Low'></a> +<h2>Problems with Symbols, Low Severity <span class='warning'> 6 </span></h2><hr/> +<span class='h_name'>gd.h</span>, <span class='lib_name'>libgd.so.3.0.5</span><br/> +<span class="section" onclick="javascript:showContent(this, 'c_1')"> +<span class='ext'>[+]</span> gdImageStringFT <span class='sym_p'><span>( gdImage* <span class='color_p'>im</span></span>, <span>int* <span class='color_p'>brect</span></span>, <span>int <span class='color_p'>fg</span></span>, <span>char* <span class='color_p'>fontlist</span></span>, <span>double <span class='color_p'>ptsize</span></span>, <span>double <span class='color_p'>angle</span></span>, <span>int <span class='color_p'>x</span></span>, <span>int <span class='color_p'>y</span></span>, <span>char* <span class='color_p'>string</span></span> )</span> <span class='warning'> 2 </span></span> +<br/> +<div id="c_1" style="display:none;"> + + +<span class='new_sign_lbl'>⇣</span> +<br/> +<span class='new_sign'>gdImageStringFT <span class='sym_p'><span>( gdImage* <span class='color_p'>im</span></span>, <span>int* <span class='color_p'>brect</span></span>, <span>int <span class='color_p'>fg</span></span>, <span>char const* <span class='color_p'>fontlist</span></span>, <span>double <span class='color_p'>ptsize</span></span>, <span>double <span class='color_p'>angle</span></span>, <span>int <span class='color_p'>x</span></span>, <span>int <span class='color_p'>y</span></span>, <span>char const* <span class='color_p'>string</span></span> )</span></span><br/> +<table class='ptable'> +<tr> +<th class='pn'></th> +<th class='chg'>Change</th> +<th>Effect</th> +</tr> +<tr> +<th>1</th> +<td>Type of <b>4th</b> parameter <b>fontlist</b> has been changed from <b>char*</b> to <span class='value'>char const*</span>.</td> +<td>Replacement of parameter data type may indicate a change in its semantic meaning.</td> +</tr> +<tr> +<th>2</th> +<td>Type of <b>9th</b> parameter <b>string</b> has been changed from <b>char*</b> to <span class='value'>char const*</span>.</td> +<td>Replacement of parameter data type may indicate a change in its semantic meaning.</td> +</tr> +</table> +<br/> +</div> +<span class="section" onclick="javascript:showContent(this, 'c_2')"> +<span class='ext'>[+]</span> gdImageStringFTEx <span class='sym_p'><span>( gdImage* <span class='color_p'>im</span></span>, <span>int* <span class='color_p'>brect</span></span>, <span>int <span class='color_p'>fg</span></span>, <span>char* <span class='color_p'>fontlist</span></span>, <span>double <span class='color_p'>ptsize</span></span>, <span>double <span class='color_p'>angle</span></span>, <span>int <span class='color_p'>x</span></span>, <span>int <span class='color_p'>y</span></span>, <span>char* <span class='color_p'>string</span></span>, <span>gdFTStringExtraPtr <span class='color_p'>strex</span></span> )</span> <span class='warning'> 2 </span></span> +<br/> +<div id="c_2" style="display:none;"> + + +<span class='new_sign_lbl'>⇣</span> +<br/> +<span class='new_sign'>gdImageStringFTEx <span class='sym_p'><span>( gdImage* <span class='color_p'>im</span></span>, <span>int* <span class='color_p'>brect</span></span>, <span>int <span class='color_p'>fg</span></span>, <span>char const* <span class='color_p'>fontlist</span></span>, <span>double <span class='color_p'>ptsize</span></span>, <span>double <span class='color_p'>angle</span></span>, <span>int <span class='color_p'>x</span></span>, <span>int <span class='color_p'>y</span></span>, <span>char const* <span class='color_p'>string</span></span>, <span>gdFTStringExtraPtr <span class='color_p'>strex</span></span> )</span></span><br/> +<table class='ptable'> +<tr> +<th class='pn'></th> +<th class='chg'>Change</th> +<th>Effect</th> +</tr> +<tr> +<th>1</th> +<td>Type of <b>4th</b> parameter <b>fontlist</b> has been changed from <b>char*</b> to <span class='value'>char const*</span>.</td> +<td>Replacement of parameter data type may indicate a change in its semantic meaning.</td> +</tr> +<tr> +<th>2</th> +<td>Type of <b>9th</b> parameter <b>string</b> has been changed from <b>char*</b> to <span class='value'>char const*</span>.</td> +<td>Replacement of parameter data type may indicate a change in its semantic meaning.</td> +</tr> +</table> +<br/> +</div> +<span class="section" onclick="javascript:showContent(this, 'c_3')"> +<span class='ext'>[+]</span> gdImageStringTTF <span class='sym_p'><span>( gdImage* <span class='color_p'>im</span></span>, <span>int* <span class='color_p'>brect</span></span>, <span>int <span class='color_p'>fg</span></span>, <span>char* <span class='color_p'>fontlist</span></span>, <span>double <span class='color_p'>ptsize</span></span>, <span>double <span class='color_p'>angle</span></span>, <span>int <span class='color_p'>x</span></span>, <span>int <span class='color_p'>y</span></span>, <span>char* <span class='color_p'>string</span></span> )</span> <span class='warning'> 2 </span></span> +<br/> +<div id="c_3" style="display:none;"> + + +<span class='new_sign_lbl'>⇣</span> +<br/> +<span class='new_sign'>gdImageStringTTF <span class='sym_p'><span>( gdImage* <span class='color_p'>im</span></span>, <span>int* <span class='color_p'>brect</span></span>, <span>int <span class='color_p'>fg</span></span>, <span>char const* <span class='color_p'>fontlist</span></span>, <span>double <span class='color_p'>ptsize</span></span>, <span>double <span class='color_p'>angle</span></span>, <span>int <span class='color_p'>x</span></span>, <span>int <span class='color_p'>y</span></span>, <span>char const* <span class='color_p'>string</span></span> )</span></span><br/> +<table class='ptable'> +<tr> +<th class='pn'></th> +<th class='chg'>Change</th> +<th>Effect</th> +</tr> +<tr> +<th>1</th> +<td>Type of <b>4th</b> parameter <b>fontlist</b> has been changed from <b>char*</b> to <span class='value'>char const*</span>.</td> +<td>Replacement of parameter data type may indicate a change in its semantic meaning.</td> +</tr> +<tr> +<th>2</th> +<td>Type of <b>9th</b> parameter <b>string</b> has been changed from <b>char*</b> to <span class='value'>char const*</span>.</td> +<td>Replacement of parameter data type may indicate a change in its semantic meaning.</td> +</tr> +</table> +<br/> +</div> +<br/> +<a class='top_ref' href='#Top'>to the top</a><br/> +<a name='Headers'></a><h2>Header Files <span class='gray'> 10 </span></h2><hr/> +<div class='h_list'> +entities.h<br/> +gd.h<br/> +gd_io.h<br/> +gdcache.h<br/> +gdfontg.h<br/> +gdfontl.h<br/> +gdfontmb.h<br/> +gdfonts.h<br/> +gdfontt.h<br/> +gdfx.h<br/> +</div> +<br/><a class='top_ref' href='#Top'>to the top</a><br/> +<a name='Libs'></a><h2>Libraries <span class='gray'> 1 </span></h2><hr/> +<div class='lib_list'> +libgd.so.3.0.5<br/> +</div> +<br/><a class='top_ref' href='#Top'>to the top</a><br/> +<br/><br/><br/></div><div id='SourceTab' class='tab'> +<h2>Test Info</h2><hr/> +<table class='summary'> +<tr><th>Library Name</th><td>libgd</td></tr> +<tr><th>Version #1</th><td>2.2.5-2</td></tr> +<tr><th>Version #2</th><td>2.3.0</td></tr> +<tr><th>Arch</th><td>x86_64</td></tr> +<tr><th>Subject</th><td width='150px'>Source Compatibility</td></tr> +</table> +<h2>Test Results</h2><hr/> +<table class='summary'><tr><th>Total Header Files</th><td><a href='#Headers' style='color:Blue;'>10</a></td></tr> +<tr><th>Total Libraries</th><td><a href='#Libs' style='color:Blue;'>1</a></td></tr> +<tr><th>Total Symbols / Types</th><td>499 / 122</td></tr> +<tr><th>Compatibility</th> +<td class='compatible'>100%</td> +</tr> +</table> +<h2>Problem Summary</h2><hr/> +<table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td>0</td></tr> +<tr><th>Removed Symbols</th><td>High</td><td>0</td></tr> +<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr> +<tr><td>Medium</td><td>0</td></tr> +<tr><td>Low</td><td>0</td></tr> +<tr><th rowspan='3'>Problems with<br/>Symbols</th><td>High</td><td>0</td></tr> +<tr><td>Medium</td><td>0</td></tr> +<tr><td>Low</td><td>0</td></tr> +<tr><th>Problems with<br/>Constants</th><td>Low</td><td class='warning'><a href='#Constant_Source_Problems_Low' style='color:Blue;'>4</a></td></tr> +</table> + +<a name='Low_Risk_Source_Problems'></a><a name='Constant_Source_Problems_Low'></a> +<h2>Problems with Constants, Low Severity <span class='warning'> 4 </span></h2><hr/> +<span class='h_name'>gd.h</span><br/> +<span class="section" onclick="javascript:showContent(this, 'c_4')"> +<span class='ext'>[+]</span> BGD_EXPORT_DATA_IMPL</span> +<br/> +<div id="c_4" style="display:none;"> +<table class='ptable'> +<tr> +<th class='pn'></th> +<th class='chg'>Change</th> +<th>Effect</th> +</tr> +<tr> +<th>1</th> +<td>The value of constant <b>BGD_EXPORT_DATA_IMPL</b> has been changed from <span class='value'>__attribute__ ((visibility ("hidden")))</span> to <span class='value'>__attribute__ ((__visibility__ ("hidden")))</span>.</td> +<td>Recompilation of a client program may be broken.</td> +</tr> +</table> +<br/> +</div> + +<span class="section" onclick="javascript:showContent(this, 'c_5')"> +<span class='ext'>[+]</span> BGD_EXPORT_DATA_PROT</span> +<br/> +<div id="c_5" style="display:none;"> +<table class='ptable'> +<tr> +<th class='pn'></th> +<th class='chg'>Change</th> +<th>Effect</th> +</tr> +<tr> +<th>1</th> +<td>The value of constant <b>BGD_EXPORT_DATA_PROT</b> has been changed from <span class='value'>__attribute__ ((visibility ("default")))</span> to <span class='value'>__attribute__ ((__visibility__ ("default")))</span>.</td> +<td>Recompilation of a client program may be broken.</td> +</tr> +</table> +<br/> +</div> + +<span class="section" onclick="javascript:showContent(this, 'c_6')"> +<span class='ext'>[+]</span> GD_MINOR_VERSION</span> +<br/> +<div id="c_6" style="display:none;"> +<table class='ptable'> +<tr> +<th class='pn'></th> +<th class='chg'>Change</th> +<th>Effect</th> +</tr> +<tr> +<th>1</th> +<td>The value of constant <b>GD_MINOR_VERSION</b> has been changed from <b>2</b> to <b>3</b>.</td> +<td>Recompilation of a client program may be broken.</td> +</tr> +</table> +<br/> +</div> + +<span class="section" onclick="javascript:showContent(this, 'c_7')"> +<span class='ext'>[+]</span> GD_RELEASE_VERSION</span> +<br/> +<div id="c_7" style="display:none;"> +<table class='ptable'> +<tr> +<th class='pn'></th> +<th class='chg'>Change</th> +<th>Effect</th> +</tr> +<tr> +<th>1</th> +<td>The value of constant <b>GD_RELEASE_VERSION</b> has been changed from <b>5</b> to <b>0</b>.</td> +<td>Recompilation of a client program may be broken.</td> +</tr> +</table> +<br/> +</div> + +<br/> +<a class='top_ref' href='#Top'>to the top</a><br/> +<a name='Headers'></a><h2>Header Files <span class='gray'> 10 </span></h2><hr/> +<div class='h_list'> +entities.h<br/> +gd.h<br/> +gd_io.h<br/> +gdcache.h<br/> +gdfontg.h<br/> +gdfontl.h<br/> +gdfontmb.h<br/> +gdfonts.h<br/> +gdfontt.h<br/> +gdfx.h<br/> +</div> +<br/><a class='top_ref' href='#Top'>to the top</a><br/> +<a name='Libs'></a><h2>Libraries <span class='gray'> 1 </span></h2><hr/> +<div class='lib_list'> +libgd.so.3.0.5<br/> +</div> +<br/><a class='top_ref' href='#Top'>to the top</a><br/> +<br/><br/><br/></div><hr/> +<div class='footer' align='right'><i>Generated by <a href='https://github.com/lvc/abi-compliance-checker'>ABI Compliance Checker</a> 2.3  </i> +</div> +<br/> + +</body></html> diff --git a/gd-2.1.0-multilib.patch b/gd-2.1.0-multilib.patch deleted file mode 100644 index c4fdc63..0000000 --- a/gd-2.1.0-multilib.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff -up gd-2.1.0/config/gdlib-config.in.multilib gd-2.1.0/config/gdlib-config.in ---- gd-2.1.0/config/gdlib-config.in.multilib	2013-04-21 16:58:17.820010758 +0200 -+++ gd-2.1.0/config/gdlib-config.in	2013-04-21 16:59:27.896317922 +0200 -@@ -7,9 +7,10 @@ - # installation directories - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ -+libdir=`pkg-config gdlib --variable=libdir` - includedir=@includedir@ - bindir=@bindir@ -+ldflags=`pkg-config gdlib --variable=ldflags` -  - usage() - { -@@ -68,7 +69,7 @@ while test $# -gt 0; do - 	echo @GDLIB_REVISION@ - 	;; -     --ldflags) --	echo @LDFLAGS@ -+	echo $ldflags - 	;; -     --libs) - 	echo -lgd @LIBS@ @LIBICONV@ -@@ -83,7 +84,7 @@ while test $# -gt 0; do - 	echo "GD library  @VERSION@" - 	echo "includedir: $includedir" - 	echo "cflags:     -I@includedir@" --	echo "ldflags:    @LDFLAGS@" -+	echo "ldflags:    $ldflags" - 	echo "libs:       @LIBS@ @LIBICONV@" - 	echo "libdir:     $libdir" - 	echo "features:   @FEATURES@" diff --git a/gd-2.2.5-gdImageBmpPtr-double-free.patch b/gd-2.2.5-gdImageBmpPtr-double-free.patch deleted file mode 100644 index 80f9712..0000000 --- a/gd-2.2.5-gdImageBmpPtr-double-free.patch +++ /dev/null @@ -1,73 +0,0 @@ -From ac16bdf2d41724b5a65255d4c28fb0ec46bc42f5 Mon Sep 17 00:00:00 2001 -From: Mike Frysinger <vapier@gentoo.org> -Date: Sat, 14 Jul 2018 13:54:08 -0400 -Subject: [PATCH] bmp: check return value in gdImageBmpPtr - -Closes #447. ---- - src/gd_bmp.c | 17 ++++++++++++++--- - 1 file changed, 14 insertions(+), 3 deletions(-) - -diff --git a/src/gd_bmp.c b/src/gd_bmp.c -index bde0b9d3..78f40d9a 100644 ---- a/src/gd_bmp.c -+++ b/src/gd_bmp.c -@@ -47,6 +47,8 @@ static int bmp_read_4bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp - static int bmp_read_8bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp_hdr_t *header); - static int bmp_read_rle(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info); -  -+static int _gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression); -+ - #define BMP_DEBUG(s) -  - static int gdBMPPutWord(gdIOCtx *out, int w) -@@ -87,8 +89,10 @@ BGD_DECLARE(void *) gdImageBmpPtr(gdImagePtr im, int *size, int compression) - 	void *rv; - 	gdIOCtx *out = gdNewDynamicCtx(2048, NULL); - 	if (out == NULL) return NULL; --	gdImageBmpCtx(im, out, compression); --	rv = gdDPExtractData(out, size); -+	if (!_gdImageBmpCtx(im, out, compression)) -+		rv = gdDPExtractData(out, size); -+	else -+		rv = NULL; - 	out->gd_free(out); - 	return rv; - } -@@ -141,6 +145,11 @@ BGD_DECLARE(void) gdImageBmp(gdImagePtr im, FILE *outFile, int compression) - 		compression - whether to apply RLE or not. - */ - BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression) -+{ -+	_gdImageBmpCtx(im, out, compression); -+} -+ -+static int _gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression) - { - 	int bitmap_size = 0, info_size, total_size, padding; - 	int i, row, xpos, pixel; -@@ -148,6 +157,7 @@ BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression) - 	unsigned char *uncompressed_row = NULL, *uncompressed_row_start = NULL; - 	FILE *tmpfile_for_compression = NULL; - 	gdIOCtxPtr out_original = NULL; -+	int ret = 1; -  - 	/* No compression if its true colour or we don't support seek */ - 	if (im->trueColor) { -@@ -325,6 +335,7 @@ BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression) - 		out_original = NULL; - 	} -  -+	ret = 0; - cleanup: - 	if (tmpfile_for_compression) { - #ifdef _WIN32 -@@ -338,7 +349,7 @@ BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression) - 	if (out_original) { - 		out_original->gd_free(out_original); - 	} --	return; -+	return ret; - } -  - static int compress_row(unsigned char *row, int length) diff --git a/gd-2.2.5-heap-based-buffer-overflow.patch b/gd-2.2.5-heap-based-buffer-overflow.patch deleted file mode 100644 index ae795d0..0000000 --- a/gd-2.2.5-heap-based-buffer-overflow.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 98b2e94e62d873acbcc6d968f1f97af9749fe021 Mon Sep 17 00:00:00 2001 -From: Ondrej Dubaj <odubaj@redhat.com> -Date: Tue, 4 Jun 2019 10:54:45 +0200 -Subject: [PATCH] heap based buffer overflow in - gd_color_match.c:gdImageColorMatch() in libgd as used in imagecolormatch() - ---- - src/gd_color_match.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/gd_color_match.c b/src/gd_color_match.c -index f0842b6..a94a841 100755 ---- a/src/gd_color_match.c -+++ b/src/gd_color_match.c -@@ -31,8 +31,8 @@ BGD_DECLARE(int) gdImageColorMatch (gdImagePtr im1, gdImagePtr im2) - 		return -4; /* At least 1 color must be allocated */ - 	} -  --	buf = (unsigned long *)gdMalloc(sizeof(unsigned long) * 5 * im2->colorsTotal); --	memset (buf, 0, sizeof(unsigned long) * 5 * im2->colorsTotal ); -+	buf = (unsigned long *)gdMalloc(sizeof(unsigned long) * 5 * gdMaxColors); -+	memset (buf, 0, sizeof(unsigned long) * 5 * gdMaxColors ); -  - 	for (x=0; x < im1->sx; x++) { - 		for( y=0; y<im1->sy; y++ ) { ---  -2.17.1 - diff --git a/gd-2.2.5-potential-double-free.patch b/gd-2.2.5-potential-double-free.patch deleted file mode 100644 index 788a068..0000000 --- a/gd-2.2.5-potential-double-free.patch +++ /dev/null @@ -1,283 +0,0 @@ -From 4d9d8368d08c3a2be3ea4193b9314fffeddace52 Mon Sep 17 00:00:00 2001 -From: Ondrej Dubaj <odubaj@redhat.com> -Date: Tue, 4 Jun 2019 13:38:41 +0200 -Subject: [PATCH] Potential double-free in gdImage*Ptr() - -Whenever `gdImage*Ptr()` calls `gdImage*Ctx()` and the latter fails, we -must not call `gdDPExtractData()`; otherwise a double-free would -happen.  Since `gdImage*Ctx()` are void functions, and we can't change -that for BC reasons, we're introducing static helpers which are used -internally. - -We're adding a regression test for `gdImageJpegPtr()`, but not for -`gdImageGifPtr()` and `gdImageWbmpPtr()` since we don't know how to -trigger failure of the respective `gdImage*Ctx()` calls. - -This potential security issue has been reported by Solmaz Salimi (aka. -Rooney). ---- - src/gd_gif_out.c                  | 19 +++++++++++++++---- - src/gd_jpeg.c                     | 20 ++++++++++++++++---- - src/gd_wbmp.c                     | 21 ++++++++++++++++++--- - tests/jpeg/CMakeLists.txt         |  1 + - tests/jpeg/Makemodule.am          |  3 ++- - tests/jpeg/jpeg_ptr_double_free.c | 31 +++++++++++++++++++++++++++++++ - 6 files changed, 83 insertions(+), 12 deletions(-) - create mode 100644 tests/jpeg/jpeg_ptr_double_free.c - -diff --git a/src/gd_gif_out.c b/src/gd_gif_out.c -index 6fe707d..4a05c09 100755 ---- a/src/gd_gif_out.c -+++ b/src/gd_gif_out.c -@@ -99,7 +99,7 @@ static void char_init(GifCtx *ctx); - static void char_out(int c, GifCtx *ctx); - static void flush_char(GifCtx *ctx); -  -- -+static int _gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out); -  -  - /* -@@ -131,8 +131,11 @@ BGD_DECLARE(void *) gdImageGifPtr(gdImagePtr im, int *size) - 	void *rv; - 	gdIOCtx *out = gdNewDynamicCtx(2048, NULL); - 	if (out == NULL) return NULL; --	gdImageGifCtx(im, out); --	rv = gdDPExtractData(out, size); -+	if (!_gdImageGifCtx(im, out)) { -+        rv = gdDPExtractData(out, size); -+    } else { -+        rv = NULL; -+    } - 	out->gd_free(out); - 	return rv; - } -@@ -220,6 +223,12 @@ BGD_DECLARE(void) gdImageGif(gdImagePtr im, FILE *outFile) -  - */ - BGD_DECLARE(void) gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out) -+{ -+    _gdImageGifCtx(im, out); -+} -+ -+/* returns 0 on success, 1 on failure */ -+static int _gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out) - { - 	gdImagePtr pim = 0, tim = im; - 	int interlace, BitsPerPixel; -@@ -231,7 +240,7 @@ BGD_DECLARE(void) gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out) - 		based temporary image. */ - 		pim = gdImageCreatePaletteFromTrueColor(im, 1, 256); - 		if(!pim) { --			return; -+			return 1; - 		} - 		tim = pim; - 	} -@@ -247,6 +256,8 @@ BGD_DECLARE(void) gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out) - 		/* Destroy palette based temporary image. */ - 		gdImageDestroy(	pim); - 	} -+ -+    return 0; - } -  -  -diff --git a/src/gd_jpeg.c b/src/gd_jpeg.c -index 271ef46..bd8fc27 100755 ---- a/src/gd_jpeg.c -+++ b/src/gd_jpeg.c -@@ -123,6 +123,8 @@ static void fatal_jpeg_error(j_common_ptr cinfo) - 	exit(99); - } -  -+static int _gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality); -+ - /* -  * Write IM to OUTFILE as a JFIF-formatted JPEG image, using quality -  * QUALITY.  If QUALITY is in the range 0-100, increasing values -@@ -237,8 +239,11 @@ BGD_DECLARE(void *) gdImageJpegPtr(gdImagePtr im, int *size, int quality) - 	void *rv; - 	gdIOCtx *out = gdNewDynamicCtx(2048, NULL); - 	if (out == NULL) return NULL; --	gdImageJpegCtx(im, out, quality); --	rv = gdDPExtractData(out, size); -+	if (!_gdImageJpegCtx(im, out, quality)) { -+		rv = gdDPExtractData(out, size); -+	} else { -+		rv = NULL; -+	} - 	out->gd_free(out); - 	return rv; - } -@@ -259,6 +264,12 @@ void jpeg_gdIOCtx_dest(j_compress_ptr cinfo, gdIOCtx *outfile); -  - */ - BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality) -+{ -+	_gdImageJpegCtx(im, outfile, quality); -+} -+ -+/* returns 0 on success, 1 on failure */ -+static int _gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality) - { - 	struct jpeg_compress_struct cinfo; - 	struct jpeg_error_mgr jerr; -@@ -293,7 +304,7 @@ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality) - 		if(row) { - 			gdFree(row); - 		} --		return; -+		return 1; - 	} -  - 	cinfo.err->emit_message = jpeg_emit_message; -@@ -334,7 +345,7 @@ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality) - 	if(row == 0) { - 		gd_error("gd-jpeg: error: unable to allocate JPEG row structure: gdCalloc returns NULL\n"); - 		jpeg_destroy_compress(&cinfo); --		return; -+		return 1; - 	} -  - 	rowptr[0] = row; -@@ -411,6 +422,7 @@ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality) - 	jpeg_finish_compress(&cinfo); - 	jpeg_destroy_compress(&cinfo); - 	gdFree(row); -+	return 0; - } -  -  -diff --git a/src/gd_wbmp.c b/src/gd_wbmp.c -index 0028273..341ff6e 100755 ---- a/src/gd_wbmp.c -+++ b/src/gd_wbmp.c -@@ -88,6 +88,8 @@ int gd_getin(void *in) - 	return (gdGetC((gdIOCtx *)in)); - } -  -+static int _gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out); -+ - /* - 	Function: gdImageWBMPCtx -  -@@ -100,6 +102,12 @@ int gd_getin(void *in) - 		out   - the stream where to write - */ - BGD_DECLARE(void) gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out) -+{ -+	_gdImageWBMPCtx(image, fg, out); -+} -+ -+/* returns 0 on success, 1 on failure */ -+static int _gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out) - { - 	int x, y, pos; - 	Wbmp *wbmp; -@@ -107,7 +115,7 @@ BGD_DECLARE(void) gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out) - 	/* create the WBMP */ - 	if((wbmp = createwbmp(gdImageSX(image), gdImageSY(image), WBMP_WHITE)) == NULL) { - 		gd_error("Could not create WBMP\n"); --		return; -+		return 1; - 	} -  - 	/* fill up the WBMP structure */ -@@ -123,11 +131,15 @@ BGD_DECLARE(void) gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out) -  - 	/* write the WBMP to a gd file descriptor */ - 	if(writewbmp(wbmp, &gd_putout, out)) { -+		freewbmp(wbmp); - 		gd_error("Could not save WBMP\n"); -+		return 1; - 	} -  - 	/* des submitted this bugfix: gdFree the memory. */ - 	freewbmp(wbmp); -+ -+	return 0; - } -  - /* -@@ -271,8 +283,11 @@ BGD_DECLARE(void *) gdImageWBMPPtr(gdImagePtr im, int *size, int fg) - 	void *rv; - 	gdIOCtx *out = gdNewDynamicCtx(2048, NULL); - 	if (out == NULL) return NULL; --	gdImageWBMPCtx(im, fg, out); --	rv = gdDPExtractData(out, size); -+	if (!_gdImageWBMPCtx(im, fg, out)) { -+		rv = gdDPExtractData(out, size); -+	} else { -+		rv = NULL; -+	} - 	out->gd_free(out); - 	return rv; - } -diff --git a/tests/jpeg/CMakeLists.txt b/tests/jpeg/CMakeLists.txt -index 19964b0..a8d8162 100755 ---- a/tests/jpeg/CMakeLists.txt -+++ b/tests/jpeg/CMakeLists.txt -@@ -2,6 +2,7 @@ IF(JPEG_FOUND) - LIST(APPEND TESTS_FILES - 	jpeg_empty_file - 	jpeg_im2im -+	jpeg_ptr_double_free - 	jpeg_null - ) -  -diff --git a/tests/jpeg/Makemodule.am b/tests/jpeg/Makemodule.am -index 7e5d317..b89e169 100755 ---- a/tests/jpeg/Makemodule.am -+++ b/tests/jpeg/Makemodule.am -@@ -2,7 +2,8 @@ if HAVE_LIBJPEG - libgd_test_programs += \ - 	jpeg/jpeg_empty_file \ - 	jpeg/jpeg_im2im \ --	jpeg/jpeg_null -+	jpeg/jpeg_null \ -+	jpeg/jpeg_ptr_double_free -  - if HAVE_LIBPNG - libgd_test_programs += \ -diff --git a/tests/jpeg/jpeg_ptr_double_free.c b/tests/jpeg/jpeg_ptr_double_free.c -new file mode 100644 -index 0000000..c80aeb6 ---- /dev/null -+++ b/tests/jpeg/jpeg_ptr_double_free.c -@@ -0,0 +1,31 @@ -+/** -+ * Test that failure to convert to JPEG returns NULL -+ * -+ * We are creating an image, set its width to zero, and pass this image to -+ * `gdImageJpegPtr()` which is supposed to fail, and as such should return NULL. -+ * -+ * See also <https://github.com/libgd/libgd/issues/381> -+ */ -+ -+ -+#include "gd.h" -+#include "gdtest.h" -+ -+ -+int main() -+{ -+    gdImagePtr src, dst; -+    int size; -+ -+    src = gdImageCreateTrueColor(1, 10); -+    gdTestAssert(src != NULL); -+ -+    src->sx = 0; /* this hack forces gdImageJpegPtr() to fail */ -+ -+    dst = gdImageJpegPtr(src, &size, 0); -+    gdTestAssert(dst == NULL); -+ -+    gdImageDestroy(src); -+ -+    return gdNumFailures(); -+} -\ No newline at end of file ---  -2.17.1 - diff --git a/gd-2.2.5-upstream.patch b/gd-2.2.5-upstream.patch deleted file mode 100644 index 0bc1bcb..0000000 --- a/gd-2.2.5-upstream.patch +++ /dev/null @@ -1,62 +0,0 @@ -From a11f47475e6443b7f32d21f2271f28f417e2ac04 Mon Sep 17 00:00:00 2001 -From: "Christoph M. Becker" <cmbecker69@gmx.de> -Date: Wed, 29 Nov 2017 19:37:38 +0100 -Subject: [PATCH] Fix #420: Potential infinite loop in gdImageCreateFromGifCtx - -Due to a signedness confusion in `GetCode_` a corrupt GIF file can -trigger an infinite loop.  Furthermore we make sure that a GIF without -any palette entries is treated as invalid *after* open palette entries -have been removed. - -CVE-2018-5711 - -See also https://bugs.php.net/bug.php?id=75571. ---- - src/gd_gif_in.c             |  12 ++++++------ - tests/gif/.gitignore        |   1 + - tests/gif/CMakeLists.txt    |   1 + - tests/gif/Makemodule.am     |   2 ++ - tests/gif/php_bug_75571.c   |  28 ++++++++++++++++++++++++++++ - tests/gif/php_bug_75571.gif | Bin 0 -> 1731 bytes - 6 files changed, 38 insertions(+), 6 deletions(-) - create mode 100644 tests/gif/php_bug_75571.c - create mode 100644 tests/gif/php_bug_75571.gif - -diff --git a/src/gd_gif_in.c b/src/gd_gif_in.c -index daf26e79..0a8bd717 100644 ---- a/src/gd_gif_in.c -+++ b/src/gd_gif_in.c -@@ -335,11 +335,6 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromGifCtx(gdIOCtxPtr fd) - 		return 0; - 	} -  --	if(!im->colorsTotal) { --		gdImageDestroy(im); --		return 0; --	} -- - 	/* Check for open colors at the end, so - 	 * we can reduce colorsTotal and ultimately - 	 * BitsPerPixel */ -@@ -351,6 +346,11 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromGifCtx(gdIOCtxPtr fd) - 		} - 	} -  -+	if(!im->colorsTotal) { -+		gdImageDestroy(im); -+		return 0; -+	} -+ - 	return im; - } -  -@@ -447,7 +447,7 @@ static int - GetCode_(gdIOCtx *fd, CODE_STATIC_DATA *scd, int code_size, int flag, int *ZeroDataBlockP) - { - 	int i, j, ret; --	unsigned char count; -+	int count; -  - 	if(flag) { - 		scd->curbit = 0; -  @@ -24,6 +24,11 @@  #   FAIL gdimagefile/gdnametest (exit status: 2)  %global  with_liq   0  %endif +%if 0%{?fedora} >= 22 || 0%{?rhel} >= 7 +%global with_raqm 1 +%else +%global with_raqm 0 +%endif  Summary:       A graphics library for quick creation of PNG or JPEG images  %if 0%{?fedora} >= 20 || 0%{?rhel} >= 8 @@ -31,8 +36,8 @@ Name:          gd  %else  Name:          gd-last  %endif -Version:       2.2.5 -Release:       10%{?prever}%{?short}%{?dist} +Version:       2.3.0 +Release:       1%{?prever}%{?short}%{?dist}  License:       MIT  URL:           http://libgd.github.io/  %if 0%{?commit:1} @@ -42,16 +47,8 @@ Source0:       libgd-%{version}-%{commit}.tgz  %else  Source0:       https://github.com/libgd/libgd/releases/download/gd-%{version}/libgd-%{version}.tar.xz  %endif - -Patch1:        gd-2.1.0-multilib.patch -# CVE-2018-5711 - https://github.com/libgd/libgd/commit/a11f47475e6443b7f32d21f2271f28f417e2ac04 -Patch2:        gd-2.2.5-upstream.patch -# CVE-2018-1000222 - https://github.com/libgd/libgd/commit/ac16bdf2d41724b5a65255d4c28fb0ec46bc42f5 -Patch3:        gd-2.2.5-gdImageBmpPtr-double-free.patch -# CVE-2019-6977 -Patch4:        gd-2.2.5-heap-based-buffer-overflow.patch -# CVE-2019-6978 -Patch5:        gd-2.2.5-potential-double-free.patch +# Missing, temporary workaround, fixed upstream for next version +Source1:       https://raw.githubusercontent.com/libgd/libgd/gd-%{version}/config/getlib.sh  BuildRequires: freetype-devel  BuildRequires: fontconfig-devel @@ -69,6 +66,9 @@ BuildRequires: libwebp-devel  %if %{with_liq}  BuildRequires: libimagequant-devel  %endif +%if %{with_raqm} +BuildRequires: libraqm-devel +%endif  BuildRequires: libX11-devel  BuildRequires: libXpm-devel  BuildRequires: zlib-devel @@ -128,6 +128,9 @@ Requires: zlib-devel%{?_isa}  %if %{with_liq}  Requires: libimagequant-devel%{?_isa}  %endif +%if %{with_raqm} +Requires: libraqm-devel +%endif  %if "%{name}" == "gd-last"  Conflicts: gd-devel < %{version} @@ -144,11 +147,7 @@ files for gd, a graphics library for creating PNG and JPEG graphics.  %prep  %setup -q -n libgd-%{version}%{?prever:-%{prever}} -%patch1 -p1 -b .mlib -%patch2 -p1 -b .upstream -%patch3 -p1 -b .gdImageBmpPtr-free -%patch4 -p1 -%patch5 -p1 +install -m 0755 %{SOURCE1} config/  : $(perl config/getver.pl) @@ -200,6 +199,11 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/libgd.a  %check +# minor diff in size +XFAIL_TESTS="gdimagestringft/gdimagestringft_bbox" +%ifarch s390x +XFAIL_TESTS="gdimagestring16/gdimagestring16 gdimagestringup16/gdimagestringup16 $XFAIL_TESTS" +%endif  %if 0%{?fedora} <= 28 && 0%{?rhel} <= 7  %ifarch %{ix86}  # See https://github.com/libgd/libgd/issues/359 @@ -233,16 +237,19 @@ grep %{version} $RPM_BUILD_ROOT%{_libdir}/pkgconfig/gdlib.pc  %files progs  %{_bindir}/* -%exclude %{_bindir}/gdlib-config  %files devel -%{_bindir}/gdlib-config  %{_includedir}/*  %{_libdir}/*.so  %{_libdir}/pkgconfig/gdlib.pc  %changelog +* Tue Mar 24 2020 Remi Collet <remi@remirepo.net> - 2.3.0-1 +- update to 2.3.0 +- add dependency on libraqm +- remove gdlib-config +  * Fri Nov 01 2019 odubaj@redhat.com - 2.2.5-10  - Fixed heap based buffer overflow in gd_color_match.c:gdImageColorMatch() in libgd as used in imagecolormatch()  - Resolves: RHBZ#1678104 (CVE-2019-6977) diff --git a/getlib.sh b/getlib.sh new file mode 100644 index 0000000..4835cf6 --- /dev/null +++ b/getlib.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +GETVER="${0%/*}/getver.pl" +GDLIB_MAJOR=$("${GETVER}" MAJOR) +GDLIB_MINOR=$("${GETVER}" MINOR) +GDLIB_REVISION=$("${GETVER}" RELEASE) + +# Dynamic library version information +# See http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info + +GDLIB_LT_CURRENT=3 +# This is the version where the soname (current above) changes.  We use it +# to reset the revision base back to zero.  It's a bit of a pain, but some +# systems restrict the revision range below to [0..255] (like OS X). +GDLIB_PREV_MAJOR=2 +GDLIB_PREV_MINOR=2 +# This isn't 100% correct, but it tends to be a close enough approximation +# for how we manage the codebase.  It's rare to do a release that doesn't +# modify the library since this project is centered around the library. +GDLIB_LT_REVISION=$(( ((GDLIB_MAJOR - GDLIB_PREV_MAJOR) << 6) | ((GDLIB_MINOR - GDLIB_PREV_MINOR) << 3) | GDLIB_REVISION )) +GDLIB_LT_AGE=0 + +# The first three fields we feed into libtool and the OS target determines how +# they get used.  The last two fields we feed into cmake.  We use the same rules +# as Linux SONAME versioning in libtool, but cmake should handle it for us. +case $1 in +CURRENT) +	printf '%s' "${GDLIB_LT_CURRENT}" +	;; +REVISION) +	printf '%s' "${GDLIB_LT_REVISION}" +	;; +AGE) +	printf '%s' "${GDLIB_LT_AGE}" +	;; +VERSION) +	printf '%s' "$(( GDLIB_LT_CURRENT - GDLIB_LT_AGE )).${GDLIB_LT_AGE}.${GDLIB_LT_REVISION}" +	;; +SONAME) +	printf '%s' "$(( GDLIB_LT_CURRENT - GDLIB_LT_AGE ))" +	;; +esac  | 
