@@ -62,46 +62,41 @@ int Curl_gethostname(char *name, GETHOSTNAME_TYPE_ARG2 namelen) {
62
62
return -1 ;
63
63
64
64
#else
65
- int err = 0 ;
66
- char * dot = NULL ;
67
- char hostname [HOSTNAME_MAX + 1 ];
65
+ int err ;
66
+ char * dot ;
68
67
69
68
#ifdef DEBUGBUILD
70
69
71
70
/* Override host name when environment variable CURL_GETHOSTNAME is set */
72
71
const char * force_hostname = getenv ("CURL_GETHOSTNAME" );
73
72
if (force_hostname ) {
74
- strncpy (hostname , force_hostname , sizeof (hostname ));
75
- hostname [sizeof (hostname ) - 1 ] = '\0' ;
73
+ strncpy (name , force_hostname , namelen );
74
+ err = 0 ;
75
+ }
76
+ else {
77
+ name [0 ] = '\0' ;
78
+ err = gethostname (name , namelen );
76
79
}
77
- else
78
- err = gethostname (hostname , sizeof (hostname ));
79
80
80
81
#else /* DEBUGBUILD */
81
82
82
83
/* The call to system's gethostname() might get intercepted by the
83
84
libhostname library when libcurl is built as a non-debug shared
84
85
library when running the test suite. */
85
- err = gethostname (hostname , sizeof (hostname ));
86
+ name [0 ] = '\0' ;
87
+ err = gethostname (name , namelen );
86
88
87
89
#endif
88
90
89
- if (err != 0 )
91
+ name [namelen - 1 ] = '\0' ;
92
+
93
+ if (err )
90
94
return err ;
91
95
92
- /* Is the hostname fully qualified? */
93
- dot = strchr (hostname , '.' );
94
- if (dot ) {
95
- /* Copy only the machine name to the specified buffer */
96
- size_t size = dot - hostname ;
97
- strncpy (name , hostname , namelen > size ? size : namelen );
98
- name [(namelen > size ? size : namelen ) - 1 ] = '\0' ;
99
- }
100
- else {
101
- /* Copy the hostname to the specified buffer */
102
- strncpy (name , hostname , namelen );
103
- name [namelen - 1 ] = '\0' ;
104
- }
96
+ /* Truncate domain, leave only machine name */
97
+ dot = strchr (name , '.' );
98
+ if (dot )
99
+ * dot = '\0' ;
105
100
106
101
return 0 ;
107
102
#endif
0 commit comments