[[!meta copyright="Copyright © 2012, 2014 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] [[!tag open_issue_porting]] sakura ====== Simple but powerful libvte-based terminal emulator. **Home page**: [[http://www.pleyades.net/david/sakura.php]] [[!toc startlevel=2]] * * * Log --- * **Started**: 2012-02-03 * **Discussed**: [2012-02-03](http://lists.debian.org/debian-hurd/2012/02/msg00031.html) * **Draft Submitted**: - * **Submitted**: 2012-02-07, Bug#[659018](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=659018) * **Accepted**: 2012-02-12, by Andrew Starr-Bochicchio * * * ToDo ---- Here is the output of `grep -R PATH_MAX sakura-2.4.2/*`: src/sakura.c: char buf[PATH_MAX+1]; * * * Comments -------- + char *buf = NULL; + struct stat sb; Will dynamically allocate the buffer according to information provided by `lstat()`. + if (lstat(file, &sb) == -1) { + return cwd; + } + buf = malloc(sb.st_size + 1); Do the allocation. Don't bother to check for return value as `g_strdup_printf()` doesn't do it. + len = readlink (file, buf, sb.st_size + 1); + if (len < 0 || len > sb.st_size) { + g_free(buf); + return cwd; + } Check `realink()` return value. + g_free(buf); Free the dynamically allocated buffer.