httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ben RUBSON <ben.rub...@gmail.com>
Subject Re: [users@httpd] Get UID/GID from a username string
Date Sat, 16 Apr 2016 10:09:41 GMT
> Ben: have a look at how mod_rewrite accesses its own ap_register_rewrite_mapfunc via

So Rainer, I just quickly wrote my module, it works, many thanks for your help.

Below is my code, I just have 2 questions regarding it :
1 - do I need to "free(pw)" ?
2 - is "key = apr_palloc(r->pool, 7)" the right method ? Doing this I want to avoid buffer
overflow in case of uid/gid greater in length than the key parameter.

Thank you very much,

Cheers,

Ben



#include "http_core.h"
#include "mod_rewrite.h"
#include <pwd.h>

static char *uid(request_rec *r, char *key)
{
	struct passwd *pw;
	if((pw = getpwnam(key)) == NULL)
	{
		*key = '\0';
	}
	else
	{
		key = apr_palloc(r->pool, 7);
		sprintf(key, "%d", pw->pw_uid);
	}
	return key;
}

static char *gid(request_rec *r, char *key)
{
	int uid=atoi(key);
	struct passwd *pw;
	if((pw = getpwuid(uid)) == NULL)
	{
		*key = '\0';
	}
	else
	{
		key = apr_palloc(r->pool, 7);
		sprintf(key, "%d", pw->pw_gid);
		return key;
	}
	return key;
}

static void register_hooks(apr_pool_t *pool)
{
	APR_OPTIONAL_FN_TYPE(ap_register_rewrite_mapfunc) *map_pfn_register;
	map_pfn_register = APR_RETRIEVE_OPTIONAL_FN(ap_register_rewrite_mapfunc);
	map_pfn_register("uid", uid);
	map_pfn_register("gid", gid);
}

AP_DECLARE_MODULE(test) = {
	STANDARD20_MODULE_STUFF,NULL,NULL,NULL,NULL,NULL,register_hooks
};



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message