<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>187174</bug_id>
          
          <creation_ts>2018-06-29 04:00:33 -0700</creation_ts>
          <short_desc>[Linux] Fix memory leak in WTF::forEachLine()</short_desc>
          <delta_ts>2018-07-02 04:41:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alicia Boya García">aboya</reporter>
          <assigned_to name="Alicia Boya García">aboya</assigned_to>
          <cc>aperez</cc>
    
    <cc>benjamin</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ysuzuki</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1437744</commentid>
    <comment_count>0</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-06-29 04:00:33 -0700</bug_when>
    <thetext>getline() allocates a buffer even when the read fails because EOF. This buffer also needs to be freed.

Also note the buffer is intended to be reused to avoid making an allocation each time a line is read, getline() will realloc() the buffer autmatically if necessary.

See `man getline()` for an example:

#define _GNU_SOURCE
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int
main(int argc, char *argv[])
{
   FILE *stream;
   char *line = NULL;
   size_t len = 0;
   ssize_t nread;

   if (argc != 2) {
       fprintf(stderr, &quot;Usage: %s &lt;file&gt;\n&quot;, argv[0]);
       exit(EXIT_FAILURE);
   }

   stream = fopen(argv[1], &quot;r&quot;);
   if (stream == NULL) {
       perror(&quot;fopen&quot;);
       exit(EXIT_FAILURE);
   }

   while ((nread = getline(&amp;line, &amp;len, stream)) != -1) {
       printf(&quot;Retrieved line of length %zu:\n&quot;, nread);
       fwrite(line, nread, 1, stdout);
   }

   free(line);
   fclose(stream);
   exit(EXIT_SUCCESS);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437745</commentid>
    <comment_count>1</comment_count>
      <attachid>343904</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-06-29 04:15:30 -0700</bug_when>
    <thetext>Created attachment 343904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437746</commentid>
    <comment_count>2</comment_count>
      <attachid>343904</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-06-29 04:19:10 -0700</bug_when>
    <thetext>Comment on attachment 343904
Patch

Informal r+ from me, good catch! :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437752</commentid>
    <comment_count>3</comment_count>
      <attachid>343904</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-29 05:17:02 -0700</bug_when>
    <thetext>Comment on attachment 343904
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=343904&amp;action=review

&gt; Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:43
&gt;      while (getline(&amp;buffer, &amp;size, file) != -1) {

We should get the size of the line string here (lineLength = getline(...)), since “size” is the length of the allocated buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437753</commentid>
    <comment_count>4</comment_count>
      <attachid>343904</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-06-29 05:26:06 -0700</bug_when>
    <thetext>Comment on attachment 343904
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=343904&amp;action=review

&gt;&gt; Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:43
&gt;&gt;      while (getline(&amp;buffer, &amp;size, file) != -1) {
&gt; 
&gt; We should get the size of the line string here (lineLength = getline(...)), since “size” is the length of the allocated buffer.

Actually, size is never read in the functor, it&apos;s an unused argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438398</commentid>
    <comment_count>5</comment_count>
      <attachid>343904</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-07-01 23:08:43 -0700</bug_when>
    <thetext>Comment on attachment 343904
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=343904&amp;action=review

&gt;&gt;&gt; Source/WTF/wtf/linux/MemoryFootprintLinux.cpp:43
&gt;&gt;&gt;      while (getline(&amp;buffer, &amp;size, file) != -1) {
&gt;&gt; 
&gt;&gt; We should get the size of the line string here (lineLength = getline(...)), since “size” is the length of the allocated buffer.
&gt; 
&gt; Actually, size is never read in the functor, it&apos;s an unused argument.

Please remove it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438434</commentid>
    <comment_count>6</comment_count>
      <attachid>344089</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-07-02 03:26:31 -0700</bug_when>
    <thetext>Created attachment 344089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438439</commentid>
    <comment_count>7</comment_count>
      <attachid>344089</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-02 03:47:11 -0700</bug_when>
    <thetext>Comment on attachment 344089
Patch

Rejecting attachment 344089 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 344089, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Zan Dobersek found in /Volumes/Data/EWS/WebKit/Source/WTF/ChangeLog does not appear to be a valid reviewer according to contributors.json.
/Volumes/Data/EWS/WebKit/Source/WTF/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: https://webkit-queues.webkit.org/results/8410850</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438440</commentid>
    <comment_count>8</comment_count>
      <attachid>344092</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-07-02 04:02:01 -0700</bug_when>
    <thetext>Created attachment 344092
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438443</commentid>
    <comment_count>9</comment_count>
      <attachid>344092</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-02 04:41:36 -0700</bug_when>
    <thetext>Comment on attachment 344092
Patch for landing

Clearing flags on attachment: 344092

Committed r233420: &lt;https://trac.webkit.org/changeset/233420&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438444</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-02 04:41:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343904</attachid>
            <date>2018-06-29 04:15:30 -0700</date>
            <delta_ts>2018-07-02 03:26:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187174-20180629131528.patch</filename>
            <type>text/plain</type>
            <size>1225</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI0YTc0MmM2NDQ0NWU5NjE5ODQ0ZjZk
OTU5NTUwNDk1MzRhMjk3M2QuLmI2MTJlMzkzZGFkOTFiZjI3MjQ2MjM0Nzk0OTA4OWQ3ODdlNzhm
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDYtMjkgIEFsaWNpYSBCb3lhIEdhcmPDrWEg
IDxhYm95YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMaW51eF0gRml4IG1lbW9yeSBsZWFrIGlu
IFdURjo6Zm9yRWFjaExpbmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg3MTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvbGludXgvTWVtb3J5Rm9vdHByaW50TGludXguY3BwOgorICAgICAg
ICAoV1RGOjpmb3JFYWNoTGluZSk6CisKIDIwMTgtMDYtMjUgIERhdmlkIEZlbnRvbiAgPGRhdmlk
X2ZlbnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIz
MzEyMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3RwcmludExp
bnV4LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3RwcmludExpbnV4LmNwcApp
bmRleCA1NTg3MmNhNWY0NTYwYjg3MWQ5YzM0OTU5ZjA0OTViZGRmMTkzZjVkLi4zNDQzNTA1N2E1
ODhkZTVmMWU5NTY5MDMxM2E1ZDViZmQ4Y2VjZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9saW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvbGlu
dXgvTWVtb3J5Rm9vdHByaW50TGludXguY3BwCkBAIC00MiwxMCArNDIsOCBAQCBzdGF0aWMgdm9p
ZCBmb3JFYWNoTGluZShGSUxFKiBmaWxlLCBGdW5jdG9yIGZ1bmN0b3IpCiAgICAgc2l6ZV90IHNp
emUgPSAwOwogICAgIHdoaWxlIChnZXRsaW5lKCZidWZmZXIsICZzaXplLCBmaWxlKSAhPSAtMSkg
ewogICAgICAgICBmdW5jdG9yKGJ1ZmZlciwgc2l6ZSk7Ci0gICAgICAgIGZyZWUoYnVmZmVyKTsK
LSAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgc2l6ZSA9IDA7CiAgICAgfQorICAg
IGZyZWUoYnVmZmVyKTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344089</attachid>
            <date>2018-07-02 03:26:31 -0700</date>
            <delta_ts>2018-07-02 04:01:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187174-20180702122629.patch</filename>
            <type>text/plain</type>
            <size>1588</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI0YTc0MmM2NDQ0NWU5NjE5ODQ0ZjZk
OTU5NTUwNDk1MzRhMjk3M2QuLmZjNjZjOTVkOGZmMDJhNzAzOGMxYjc1NWNkYjFkZDUzZjk0MGRh
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDYtMjkgIEFsaWNpYSBCb3lhIEdhcmPDrWEg
IDxhYm95YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMaW51eF0gRml4IG1lbW9yeSBsZWFrIGlu
IFdURjo6Zm9yRWFjaExpbmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg3MTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFuIERvYmVyc2VrLgor
CisgICAgICAgICogd3RmL2xpbnV4L01lbW9yeUZvb3RwcmludExpbnV4LmNwcDoKKyAgICAgICAg
KFdURjo6Zm9yRWFjaExpbmUpOgorCiAyMDE4LTA2LTI1ICBEYXZpZCBGZW50b24gIDxkYXZpZF9m
ZW50b25AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzMx
MjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9saW51eC9NZW1vcnlGb290cHJpbnRMaW51
eC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9saW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAKaW5k
ZXggNTU4NzJjYTVmNDU2MGI4NzFkOWMzNDk1OWYwNDk1YmRkZjE5M2Y1ZC4uZmY5NWI5ZWU4ZjU5
MjgzNmQ1Y2FlOWU2MDU4YzdlYzdmMjcwZWVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
bGludXgvTWVtb3J5Rm9vdHByaW50TGludXguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2xpbnV4
L01lbW9yeUZvb3RwcmludExpbnV4LmNwcApAQCAtNDEsMTEgKzQxLDkgQEAgc3RhdGljIHZvaWQg
Zm9yRWFjaExpbmUoRklMRSogZmlsZSwgRnVuY3RvciBmdW5jdG9yKQogICAgIGNoYXIqIGJ1ZmZl
ciA9IG51bGxwdHI7CiAgICAgc2l6ZV90IHNpemUgPSAwOwogICAgIHdoaWxlIChnZXRsaW5lKCZi
dWZmZXIsICZzaXplLCBmaWxlKSAhPSAtMSkgewotICAgICAgICBmdW5jdG9yKGJ1ZmZlciwgc2l6
ZSk7Ci0gICAgICAgIGZyZWUoYnVmZmVyKTsKLSAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKLSAg
ICAgICAgc2l6ZSA9IDA7CisgICAgICAgIGZ1bmN0b3IoYnVmZmVyKTsKICAgICB9CisgICAgZnJl
ZShidWZmZXIpOwogfQogI2VuZGlmCiAKQEAgLTU4LDcgKzU2LDcgQEAgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG1lbW9yeUZvb3RwcmludCgpCiAKICAgICB1bnNpZ25lZCBsb25nIHRvdGFsUHJpdmF0
ZURpcnR5SW5LQiA9IDA7CiAgICAgYm9vbCBpc0Fub255bW91cyA9IGZhbHNlOwotICAgIGZvckVh
Y2hMaW5lKGZpbGUsIFsmXSAoY2hhciogYnVmZmVyLCBzaXplX3QpIHsKKyAgICBmb3JFYWNoTGlu
ZShmaWxlLCBbJl0gKGNoYXIqIGJ1ZmZlcikgewogICAgICAgICB7CiAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIHN0YXJ0OwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlbmQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344092</attachid>
            <date>2018-07-02 04:02:01 -0700</date>
            <delta_ts>2018-07-02 04:41:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-187174-20180702130200.patch</filename>
            <type>text/plain</type>
            <size>1590</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI0YTc0MmM2NDQ0NWU5NjE5ODQ0ZjZk
OTU5NTUwNDk1MzRhMjk3M2QuLmNhYzQ0ZGFjNGUyNWY5Yjk0ZDM2MjNjZTI5ZTUwZmFhMTFkNjY2
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDYtMjkgIEFsaWNpYSBCb3lhIEdhcmPDrWEg
IDxhYm95YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMaW51eF0gRml4IG1lbW9yeSBsZWFrIGlu
IFdURjo6Zm9yRWFjaExpbmUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg3MTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgxb1hbiBEb2JlcsWhZWsu
CisKKyAgICAgICAgKiB3dGYvbGludXgvTWVtb3J5Rm9vdHByaW50TGludXguY3BwOgorICAgICAg
ICAoV1RGOjpmb3JFYWNoTGluZSk6CisKIDIwMTgtMDYtMjUgIERhdmlkIEZlbnRvbiAgPGRhdmlk
X2ZlbnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIz
MzEyMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3RwcmludExp
bnV4LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2xpbnV4L01lbW9yeUZvb3RwcmludExpbnV4LmNwcApp
bmRleCA1NTg3MmNhNWY0NTYwYjg3MWQ5YzM0OTU5ZjA0OTViZGRmMTkzZjVkLi5mZjk1YjllZThm
NTkyODM2ZDVjYWU5ZTYwNThjN2VjN2YyNzBlZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9saW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvbGlu
dXgvTWVtb3J5Rm9vdHByaW50TGludXguY3BwCkBAIC00MSwxMSArNDEsOSBAQCBzdGF0aWMgdm9p
ZCBmb3JFYWNoTGluZShGSUxFKiBmaWxlLCBGdW5jdG9yIGZ1bmN0b3IpCiAgICAgY2hhciogYnVm
ZmVyID0gbnVsbHB0cjsKICAgICBzaXplX3Qgc2l6ZSA9IDA7CiAgICAgd2hpbGUgKGdldGxpbmUo
JmJ1ZmZlciwgJnNpemUsIGZpbGUpICE9IC0xKSB7Ci0gICAgICAgIGZ1bmN0b3IoYnVmZmVyLCBz
aXplKTsKLSAgICAgICAgZnJlZShidWZmZXIpOwotICAgICAgICBidWZmZXIgPSBudWxscHRyOwot
ICAgICAgICBzaXplID0gMDsKKyAgICAgICAgZnVuY3RvcihidWZmZXIpOwogICAgIH0KKyAgICBm
cmVlKGJ1ZmZlcik7CiB9CiAjZW5kaWYKIApAQCAtNTgsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKIAogICAgIHVuc2lnbmVkIGxvbmcgdG90YWxQcml2
YXRlRGlydHlJbktCID0gMDsKICAgICBib29sIGlzQW5vbnltb3VzID0gZmFsc2U7Ci0gICAgZm9y
RWFjaExpbmUoZmlsZSwgWyZdIChjaGFyKiBidWZmZXIsIHNpemVfdCkgeworICAgIGZvckVhY2hM
aW5lKGZpbGUsIFsmXSAoY2hhciogYnVmZmVyKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgc3RhcnQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVuZDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>