44 * darcy@druid.net
55 * http://www.druid.net/darcy/
66 *
7- * $PostgreSQL: pgsql/contrib/chkpass/chkpass.c,v 1.17 2006/07/14 05:28:27 tgl Exp $
7+ * $PostgreSQL: pgsql/contrib/chkpass/chkpass.c,v 1.18 2007/02/07 00:52:35 petere Exp $
88 * best viewed with tabs set to 4
99 */
1010
@@ -76,8 +76,7 @@ chkpass_in(PG_FUNCTION_ARGS)
7676if (* str == ':' )
7777{
7878result = (chkpass * )palloc (sizeof (chkpass ));
79- strncpy (result -> password ,str + 1 ,13 );
80- result -> password [13 ]= 0 ;
79+ strlcpy (result -> password ,str + 1 ,13 + 1 );
8180PG_RETURN_POINTER (result );
8281}
8382
@@ -150,8 +149,7 @@ chkpass_eq(PG_FUNCTION_ARGS)
150149
151150if (a2 -> vl_len < 12 )
152151sz = a2 -> vl_len - 4 ;
153- strncpy (str ,a2 -> vl_dat ,sz );
154- str [sz ]= 0 ;
152+ strlcpy (str ,a2 -> vl_dat ,sz + 1 );
155153PG_RETURN_BOOL (strcmp (a1 -> password ,crypt (str ,a1 -> password ))== 0 );
156154}
157155
@@ -166,7 +164,6 @@ chkpass_ne(PG_FUNCTION_ARGS)
166164
167165if (a2 -> vl_len < 12 )
168166sz = a2 -> vl_len - 4 ;
169- strncpy (str ,a2 -> vl_dat ,sz );
170- str [sz ]= 0 ;
167+ strlcpy (str ,a2 -> vl_dat ,sz + 1 );
171168PG_RETURN_BOOL (strcmp (a1 -> password ,crypt (str ,a1 -> password ))!= 0 );
172169}