<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 12"><meta name="Originator" content="Microsoft Word 12"><link rel="File-List" href="file:///C:%5CUsers%5Cgary_hu%5CAppData%5CLocal%5CTemp%5C1%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"><link rel="themeData" href="file:///C:%5CUsers%5Cgary_hu%5CAppData%5CLocal%5CTemp%5C1%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"><link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cgary_hu%5CAppData%5CLocal%5CTemp%5C1%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"><style>
<!--
/* Font Definitions */
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-alt:"Calisto MT";
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 415 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-alt:"Times New Roman";
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
{font-family:"\@SimSun";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-520092929 1073806591 9 0 415 0;}
@font-face
{font-family:ОўИнСЕєЪ;
panose-1:0 0 0 0 0 0 0 0 0 0;
mso-font-alt:"Arial Unicode MS";
mso-font-charset:134;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:auto;
mso-font-signature:0 135135232 16 0 262144 0;}
@font-face
{font-family:"\@ОўИнСЕєЪ";
panose-1:0 0 0 0 0 0 0 0 0 0;
mso-font-charset:134;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:auto;
mso-font-signature:0 135135232 16 0 262144 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
mso-pagination:widow-orphan;
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-fareast-font-family:SimSun;
mso-fareast-theme-font:minor-fareast;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-size:10.0pt;
mso-ansi-font-size:10.0pt;
mso-bidi-font-size:10.0pt;
mso-ascii-font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman";
mso-font-kerning:0pt;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<p class="MsoNormal"><span style="font-size: 12pt;" lang="EN-US">Hi All,</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt;" lang="EN-US"> <br></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt;" lang="EN-US">I found a defect in function "</span><span style="font-size: 11pt; font-family: Consolas; color: rgb(136, 0, 0);" lang="EN-US">ngx_vslprintf</span><span style="font-size: 12pt; font-family: "ОўИнСЕєЪ","serif";">”</span><span style="font-size: 12pt;" lang="EN-US">which doesn't support right alignment
format of a string, such as "%40s", as purported in the comments
right above the function "</span><span style="font-size: 11pt; font-family: Consolas; color: rgb(136, 0, 0);" lang="EN-US">ngx_sprintf</span><span style="font-size: 12pt;" lang="EN-US">" in file "src/core/ngx_string.c".</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt;" lang="EN-US">The following is my suggested fix in
function "</span><span style="font-size: 11pt; font-family: Consolas; color: rgb(136, 0, 0);" lang="EN-US">ngx_vslprintf</span><span style="font-size: 12pt;" lang="EN-US"> ":</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt;" lang="EN-US">
......</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt;" lang="EN-US">
</span><span style="font-size: 11pt; font-family: Consolas; color: blue;" lang="EN-US">case</span><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US"> <span style="color: rgb(163, 21, 21);">'s'</span>:</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt;" lang="EN-US">
</span><span style="font-size: 11pt; font-family: Consolas; color: navy;" lang="EN-US">p</span><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
= <span style="color: rgb(160, 0, 160);">va_arg</span>(<span style="color: navy;">args</span>,
<span style="color: blue;">u_char</span> *);</span><span style="font-size: 12pt;" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: green;">//</span></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: green;">// Added by Gary Hu</span></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: green;">//</span></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: blue;">size_t</span> <span style="color: navy;">sublen</span>;</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: blue;">size_t</span> <span style="color: navy;">padlen</span>;</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: navy;">sublen</span> = <span style="color: rgb(160, 0, 160);">ngx_strlen</span>(<span style="color: navy;">p</span>);</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: green;">/* Add padding whitespaces to the output buffer to
achieve right alignment*/</span></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: blue;">if</span> (<span style="color: navy;">width</span> >
0 && <span style="color: navy;">width</span> > <span style="color: navy;">sublen</span>)</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
{</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: navy;">padlen</span> = <span style="color: rgb(160, 0, 160);">ngx_min</span>(((<span style="color: blue;">size_t</span>) (<span style="color: navy;">last</span> - <span style="color: navy;">buf</span>)), <span style="color: navy;">width</span> - <span style="color: navy;">sublen</span>);</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: rgb(160, 0, 160);">ngx_memset</span>(<span style="color: navy;">buf</span>,
<span style="color: rgb(163, 21, 21);">' '</span>, <span style="color: navy;">padlen</span>);</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: navy;">buf</span> += <span style="color: navy;">padlen</span>;</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
}
</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: green;">//</span></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: green;">// End added by Gary Hu</span></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: green;">//</span></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: blue;">if</span> (<span style="color: navy;">slen</span> == (<span style="color: blue;">size_t</span>) -1) {</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: blue;">while</span> (*<span style="color: navy;">p</span>
&& <span style="color: navy;">buf</span> < <span style="color: navy;">last</span>)
{</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
*<span style="color: navy;">buf</span>++ = *<span style="color: navy;">p</span>++;</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
}</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
} <span style="color: blue;">else</span> {</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: navy;">len</span> = <span style="color: rgb(160, 0, 160);">ngx_min</span>(((<span style="color: blue;">size_t</span>) (<span style="color: navy;">last</span> - <span style="color: navy;">buf</span>)), <span style="color: navy;">slen</span>);</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: navy;">buf</span> = <span style="color: rgb(160, 0, 160);">ngx_cpymem</span>(<span style="color: navy;">buf</span>, <span style="color: navy;">p</span>, <span style="color: navy;">len</span>);</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
}</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: navy;">fmt</span>++;</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: blue;">continue</span>;</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas;" lang="EN-US">
<span style="color: blue;">case</span> <span style="color: rgb(163, 21, 21);">'O'</span>:</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas; color: rgb(136, 0, 0);" lang="EN-US">
</span><span style="font-size: 12pt;" lang="EN-US">......</span></p><p class="MsoNormal" style="text-align: left;" align="left"><br><span style="font-size: 12pt;" lang="EN-US"></span><span style="font-size: 11pt; font-family: Consolas; color: rgb(136, 0, 0);" lang="EN-US"></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 11pt; font-family: Consolas; color: rgb(136, 0, 0);" lang="EN-US"> </span></p>
<p class="MsoNormal"><span style="font-size: 12pt;" lang="EN-US">Best Regards,</span></p>
<p class="MsoNormal"><span style="font-size: 12pt;" lang="EN-US">Gary Hu</span></p>