<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 &quot;</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: &quot;΢ÈíÑźÚ&quot;,&quot;serif&quot;;">”</span><span style="font-size: 12pt;" lang="EN-US">which doesn&#39;t support right alignment
format of a string, such as &quot;%40s&quot;, as purported in the comments
right above the function &quot;</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">&quot; in file &quot;src/core/ngx_string.c&quot;.</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 &quot;</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"> &quot;:</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);">&#39;s&#39;</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> &gt;
0 &amp;&amp; <span style="color: navy;">width</span> &gt; <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);">&#39; &#39;</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>
&amp;&amp; <span style="color: navy;">buf</span> &lt; <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);">&#39;O&#39;</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>