Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/nslcd/network.c
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2006-12-27 10:48:43 +0100
committerArthur de Jong <arthur@arthurdejong.org>2006-12-27 10:48:43 +0100
commite5a71411f3cab38fd8222c6a51d4791c330d5de7 (patch)
tree5922378019a29af9335b14589b5205b7661166b3 /nslcd/network.c
parent410b6fa99387e1fcfa786a571ac34f84547bfd1e (diff)
do not allocate new memory with malloc() for each request with a string parameter but use a buffer allocated on the stack instead (this simplifies free()-ing the buffer(s) in case of problems)
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-ldapd@204 ef36b2f9-881f-0410-afb5-c4e39611909c
Diffstat (limited to 'nslcd/network.c')
-rw-r--r--nslcd/network.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/nslcd/network.c b/nslcd/network.c
index e44a3e1..6b13ad3 100644
--- a/nslcd/network.c
+++ b/nslcd/network.c
@@ -111,18 +111,17 @@ _nss_ldap_parse_net (LDAPMessage * e,
int nslcd_network_byname(FILE *fp)
{
int32_t tmpint32;
- char *name;
+ char name[256];
struct ldap_args a;
int retv;
struct netent result;
char buffer[1024];
int errnop;
/* read request parameters */
- READ_STRING_ALLOC(fp,name);
+ READ_STRING_BUF2(fp,name,sizeof(name));
/* log call */
log_log(LOG_DEBUG,"nslcd_network_byname(%s)",name);
/* write the response header */
- /* FIXME: free(name) when one of these writes fails */
WRITE_INT32(fp,NSLCD_VERSION);
WRITE_INT32(fp,NSLCD_ACTION_NETWORK_BYNAME);
/* do the LDAP request */
@@ -130,8 +129,6 @@ int nslcd_network_byname(FILE *fp)
LA_STRING(a)=name;
LA_TYPE(a)=LA_TYPE_STRING;
retv=nss2nslcd(_nss_ldap_getbyname(&a,&result,buffer,1024,&errnop,_nss_ldap_filt_getnetbyname,LM_NETWORKS,_nss_ldap_parse_net));
- /* no more need for this string */
- free(name);
/* write the response */
WRITE_INT32(fp,retv);
if (retv==NSLCD_RESULT_SUCCESS)