diff src/iscygpty.c @ 12301:93155ae168fb v8.0.1030

patch 8.0.1030: MS-Windows: wrong size computation in is_cygpty() commit https://github.com/vim/vim/commit/9e8dcf9d6fa15523800005a32d40cf0382178ab0 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Aug 31 21:35:45 2017 +0200 patch 8.0.1030: MS-Windows: wrong size computation in is_cygpty() Problem: MS-Windows: wrong size computation in is_cygpty(). Solution: Compute the size properly. (Ken Takata)
author Christian Brabandt <cb@256bit.org>
date Thu, 31 Aug 2017 21:45:04 +0200
parents 4aead6a9b7a9
children 8412df1479a3
line wrap: on
line diff
--- a/src/iscygpty.c
+++ b/src/iscygpty.c
@@ -2,7 +2,7 @@
  * iscygpty.c -- part of ptycheck
  * https://github.com/k-takata/ptycheck
  *
- * Copyright (c) 2015-2016 K.Takata
+ * Copyright (c) 2015-2017 K.Takata
  *
  * You can redistribute it and/or modify it under the terms of either
  * the MIT license (as described below) or the Vim license.
@@ -27,6 +27,8 @@
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
+#ifdef _WIN32
+
 #include <ctype.h>
 #include <io.h>
 #include <wchar.h>
@@ -60,19 +62,19 @@
 //#define USE_DYNFILEID
 #ifdef USE_DYNFILEID
 typedef BOOL (WINAPI *pfnGetFileInformationByHandleEx)(
-		HANDLE					  hFile,
+		HANDLE                    hFile,
 		FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
-		LPVOID					  lpFileInformation,
-		DWORD					  dwBufferSize
+		LPVOID                    lpFileInformation,
+		DWORD                     dwBufferSize
 );
 static pfnGetFileInformationByHandleEx pGetFileInformationByHandleEx = NULL;
 
 # ifndef USE_FILEEXTD
 static BOOL WINAPI stub_GetFileInformationByHandleEx(
-		HANDLE					  hFile,
+		HANDLE                    hFile,
 		FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
-		LPVOID					  lpFileInformation,
-		DWORD					  dwBufferSize
+		LPVOID                    lpFileInformation,
+		DWORD                     dwBufferSize
 		)
 {
 	return FALSE;
@@ -111,7 +113,7 @@ int is_cygpty(int fd)
 	return 0;
 #else
 	HANDLE h;
-	int size = sizeof(FILE_NAME_INFO) + sizeof(WCHAR) * MAX_PATH;
+	int size = sizeof(FILE_NAME_INFO) + sizeof(WCHAR) * (MAX_PATH - 1);
 	FILE_NAME_INFO *nameinfo;
 	WCHAR *p = NULL;
 
@@ -125,7 +127,7 @@ int is_cygpty(int fd)
 	if (GetFileType(h) != FILE_TYPE_PIPE) {
 		return 0;
 	}
-	nameinfo = malloc(size);
+	nameinfo = malloc(size + sizeof(WCHAR));
 	if (nameinfo == NULL) {
 		return 0;
 	}
@@ -178,4 +180,6 @@ int is_cygpty_used(void)
 	return ret;
 }
 
-/* vi:set ts=8 sts=4 sw=4 noet: */
+#endif /* _WIN32 */
+
+/* vim: set ts=4 sw=4: */