@@ -660,8 +660,8 @@ static void php_get_windows_cpu(char *buf, size_t bufsize)
660660PHPAPI zend_string * php_get_uname (char mode )
661661{
662662 char * php_uname ;
663- char tmp_uname [256 ];
664663#ifdef PHP_WIN32
664+ char tmp_uname [256 ];
665665 DWORD dwBuild = 0 ;
666666 DWORD dwVersion = GetVersion ();
667667 DWORD dwWindowsMajorVersion = (DWORD )(LOBYTE (LOWORD (dwVersion )));
@@ -674,21 +674,18 @@ PHPAPI zend_string *php_get_uname(char mode)
674674 if (mode == 's' ) {
675675 php_uname = "Windows NT" ;
676676 } else if (mode == 'r' ) {
677- snprintf (tmp_uname , sizeof (tmp_uname ), "%d.%d" , dwWindowsMajorVersion , dwWindowsMinorVersion );
678- php_uname = tmp_uname ;
677+ return strpprintf (0 , "%d.%d" , dwWindowsMajorVersion , dwWindowsMinorVersion );
679678 } else if (mode == 'n' ) {
680679 php_uname = ComputerName ;
681680 } else if (mode == 'v' ) {
682681 char * winver = php_get_windows_name ();
683682 dwBuild = (DWORD )(HIWORD (dwVersion ));
684- if (winver == NULL ) {
685- snprintf ( tmp_uname , sizeof ( tmp_uname ) , "build %d" , dwBuild );
683+ if (winver == NULL ) {
684+ return strpprintf ( 0 , "build %d" , dwBuild );
686685 } else {
687- snprintf (tmp_uname , sizeof (tmp_uname ), "build %d (%s)" , dwBuild , winver );
688- }
689- php_uname = tmp_uname ;
690- if (winver ) {
686+ zend_string * build_with_version = strpprintf (0 , "build %d (%s)" , dwBuild , winver );
691687 efree (winver );
688+ return build_with_version ;
692689 }
693690 } else if (mode == 'm' ) {
694691 php_get_windows_cpu (tmp_uname , sizeof (tmp_uname ));
@@ -704,18 +701,16 @@ PHPAPI zend_string *php_get_uname(char mode)
704701
705702 /* Windows "version" 6.2 could be Windows 8/Windows Server 2012, but also Windows 8.1/Windows Server 2012 R2 */
706703 if (dwWindowsMajorVersion == 6 && dwWindowsMinorVersion == 2 ) {
707- if (strncmp (winver , "Windows 8.1" , 11 ) == 0 || strncmp (winver , "Windows Server 2012 R2" , 22 ) == 0 ) {
704+ if (strncmp (winver , "Windows 8.1" , strlen ( "Windows 8.1" )) == 0 || strncmp (winver , "Windows Server 2012 R2" , strlen ( "Windows Server 2012 R2" ) ) == 0 ) {
708705 dwWindowsMinorVersion = 3 ;
709706 }
710707 }
711708
712- snprintf (tmp_uname , sizeof (tmp_uname ), "%s %s %d.%d build %d (%s) %s" ,
713- "Windows NT" , ComputerName ,
714- dwWindowsMajorVersion , dwWindowsMinorVersion , dwBuild , winver ?winver :"unknown" , wincpu );
715- if (winver ) {
716- efree (winver );
717- }
718- php_uname = tmp_uname ;
709+ zend_string * build_with_all_info = strpprintf (0 , "%s %s %d.%d build %d (%s) %s" ,
710+ "Windows NT" , ComputerName , dwWindowsMajorVersion , dwWindowsMinorVersion , dwBuild ,
711+ winver ? winver : "unknown" , wincpu );
712+ efree (winver );
713+ return build_with_all_info ;
719714 }
720715#else
721716#ifdef HAVE_SYS_UTSNAME_H
@@ -734,10 +729,7 @@ PHPAPI zend_string *php_get_uname(char mode)
734729 } else if (mode == 'm' ) {
735730 php_uname = buf .machine ;
736731 } else { /* assume mode == 'a' */
737- snprintf (tmp_uname , sizeof (tmp_uname ), "%s %s %s %s %s" ,
738- buf .sysname , buf .nodename , buf .release , buf .version ,
739- buf .machine );
740- php_uname = tmp_uname ;
732+ return strpprintf (0 , "%s %s %s %s %s" , buf .sysname , buf .nodename , buf .release , buf .version , buf .machine );
741733 }
742734 }
743735#else
0 commit comments