update to 2.6.1, fix wrong init script (#245339)

This commit is contained in:
vcrhonek 2007-08-30 10:33:37 +00:00
parent 1ceb8218cf
commit 58c05bca8c
51 changed files with 159 additions and 15989 deletions

View File

@ -1,11 +0,0 @@
--- pegasus-2.5/src/Pegasus/Config/FixedPropertyTableLinux.h.add_cmpi_provider_lib 2005-10-03 17:15:32.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Config/FixedPropertyTableLinux.h 2005-10-31 12:58:45.000000000 -0500
@@ -56,7 +56,7 @@
{"exportSSLTrustStore", "/etc/Pegasus/indication_trust"},
{"crlStore", "/etc/Pegasus/crl"},
{"repositoryDir", "/var/lib/Pegasus/repository"},
- {"providerDir", PEGASUS_DEST_LIB_DIR "/Pegasus/providers"},
+ {"providerDir", PEGASUS_DEST_LIB_DIR "/Pegasus/providers:" PEGASUS_DEST_LIB_DIR "/cmpi" },
{"messageDir", "/usr/share/locale"},
#endif
#if defined(PEGASUS_USE_RELEASE_DIRS) && defined(PEGASUS_OS_LSB)

View File

@ -1,25 +0,0 @@
--- pegasus-2.5/src/Pegasus/Common/SSLContext.cpp.bz173401 2005-11-16 14:53:24.000000000 -0500
+++ pegasus-2.5/src/Pegasus/Common/SSLContext.cpp 2005-11-16 18:12:59.000000000 -0500
@@ -810,7 +810,8 @@
// create SSL Context Area
//
- if (!( sslContext = SSL_CTX_new(SSLv23_method()) ))
+// if (!( sslContext = SSL_CTX_new(SSLv23_method()) ))
+ if (!( sslContext = SSL_CTX_new(SSLv3_method()) ))
{
PEG_METHOD_EXIT();
//l10n
@@ -839,9 +840,9 @@
SSL_CTX_set_session_cache_mode(sslContext, SSL_SESS_CACHE_OFF);
int options = SSL_OP_ALL;
-#ifndef PEGASUS_ENABLE_SSLV2 //SSLv2 is disabled by default
- options |= SSL_OP_NO_SSLv2;
-#endif
+//#ifndef PEGASUS_ENABLE_SSLV2 //SSLv2 is disabled by default
+// options |= SSL_OP_NO_SSLv2;
+//#endif
SSL_CTX_set_options(sslContext, options);
if (_verifyPeer)

View File

@ -1,11 +0,0 @@
--- pegasus-2.5/env_var_Linux.status.ENABLE_CQL 2005-10-31 13:05:39.000000000 -0500
+++ pegasus-2.5/env_var_Linux.status 2005-11-09 19:40:03.000000000 -0500
@@ -18,7 +18,7 @@
PEGASUS_STAGING_DIR = $(PEGASUS_HOME)/stagingDir
endif
-PEGASUS_DISABLE_CQL=true
+PEGASUS_ENABLE_CQL=true
PEGASUS_DISABLE_OBJECT_NORMALIZATION=true
PEGASUS_ENABLE_CMPI_PROVIDER_MANAGER=true
PEGASUS_ENABLE_USERGROUP_AUTHORIZATION=true

View File

@ -1,25 +0,0 @@
--- pegasus-2.5/rpm/Makefile.install_id 2006-02-07 17:37:39.000000000 -0500
+++ pegasus-2.5/rpm/Makefile 2006-02-07 18:39:05.000000000 -0500
@@ -30,6 +30,9 @@
include $(ROOT)/mak/config.mak
+INSTALL_USER?=root
+INSTALL_GROUP?=root
+
#Defines subdirectories to go to recursively
DIRS = manLinux
@@ -53,9 +56,9 @@
install: tog-pegasus.rc wbem cimserver_planned.conf
ifdef PEGASUS_INSTALL
- $(PEGASUS_INSTALL) -D -o root -g root -m 0550 tog-pegasus.rc $(PEGASUS_DESTDIR)/etc/rc.d/init.d/tog-pegasus
- $(PEGASUS_INSTALL) -D -o root -g root -m 0660 cimserver_planned.conf $(PEGASUS_DESTDIR)/$(PEGASUS_CONFIG_DIR)/cimserver_planned.conf
- $(PEGASUS_INSTALL) -D -o root -g root -m 0660 wbem $(PEGASUS_DESTDIR)/etc/pam.d/wbem
+ $(PEGASUS_INSTALL) -D -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0550 tog-pegasus.rc $(PEGASUS_DESTDIR)/etc/rc.d/init.d/tog-pegasus
+ $(PEGASUS_INSTALL) -D -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0660 cimserver_planned.conf $(PEGASUS_DESTDIR)/$(PEGASUS_CONFIG_DIR)/cimserver_planned.conf
+ $(PEGASUS_INSTALL) -D -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0660 wbem $(PEGASUS_DESTDIR)/etc/pam.d/wbem
mkdir -p $(PEGASUS_DESTDIR)/$(PEGASUS_MANUSER_DIR) $(PEGASUS_DESTDIR)/$(PEGASUS_MANADMIN_DIR)
cp -fp manLinux/man1.Z/*.1 $(PEGASUS_DESTDIR)/$(PEGASUS_MANUSER_DIR)/
cp -fp manLinux/man8.Z/*.8 $(PEGASUS_DESTDIR)/$(PEGASUS_MANADMIN_DIR)/

View File

@ -1,429 +0,0 @@
--- pegasus-2.5/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp.local_or_remote_auth 2005-08-13 20:28:32.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp 2005-09-28 16:18:58.000000000 -0400
@@ -364,6 +364,9 @@
}
}
+ // Let Authenticators know whether this user is Local or Remote:
+ httpMessage->authInfo->setRemoteUser( httpMessage->fromRemoteHost );
+
//
// Handle authentication:
//
--- pegasus-2.5/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp.local_or_remote_auth 2005-07-12 14:05:09.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp 2005-09-28 16:18:58.000000000 -0400
@@ -90,7 +90,8 @@
Boolean PAMBasicAuthenticator::authenticate(
const String& userName,
- const String& password)
+ const String& password,
+ Boolean isRemoteUser)
{
PEG_METHOD_ENTER(TRC_AUTHENTICATION,
"PAMBasicAuthenticator::authenticate()");
--- pegasus-2.5/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h.local_or_remote_auth 2005-07-12 14:05:09.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h 2005-09-28 16:18:58.000000000 -0400
@@ -71,7 +71,8 @@
*/
Boolean authenticate(
const String& userName,
- const String& password);
+ const String& password,
+ Boolean isRemoteUser);
/** Verify PAM account management for the requesting user.
@param userName String containing the user name
@@ -100,7 +101,8 @@
Boolean _authenticateByPAM(
const String& userName,
- const String& password);
+ const String& password,
+ Boolean isRemoteUser);
void _createPAMStandalone();
@@ -156,7 +158,8 @@
*/
Boolean authenticate(
const String& userName,
- const String& password);
+ const String& password,
+ Boolean isRemoteUser);
/** Verify whether the user is valid.
@param userName String containing the user name
@@ -218,7 +221,8 @@
Boolean _authenticateByPAM(
const String& userName,
- const String& password);
+ const String& password,
+ Boolean isRemoteUser);
#if defined(PEGASUS_USE_PAM_STANDALONE_PROC)
PAMBasicAuthenticatorStandAlone _pamBasicAuthenticatorStandAlone;
--- pegasus-2.5/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp.local_or_remote_auth 2005-07-12 14:05:09.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp 2005-09-28 16:18:58.000000000 -0400
@@ -136,7 +136,7 @@
authInfo->setAuthenticatedUser(userName);
authInfo->setAuthenticatedPassword(password);
#else
- authenticated = _basicAuthenticator->authenticate(userName, password);
+ authenticated = _basicAuthenticator->authenticate(userName, password, authInfo->isRemoteUser());
if (authenticated)
{
--- pegasus-2.5/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp.local_or_remote_auth 2005-07-19 15:14:48.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp 2005-09-28 16:47:55.000000000 -0400
@@ -129,7 +129,8 @@
Boolean PAMBasicAuthenticator::authenticate(
const String& userName,
- const String& password)
+ const String& password,
+ Boolean isRemoteUser)
{
PEG_METHOD_ENTER(TRC_AUTHENTICATION,
"PAMBasicAuthenticator::authenticate()");
@@ -137,7 +138,7 @@
Boolean authenticated;
#if !defined(PEGASUS_USE_PAM_STANDALONE_PROC)
- authenticated = _authenticateByPAM(userName, password);
+ authenticated = _authenticateByPAM(userName, password, isRemoteUser);
#else
//
// Mutex to Serialize Authentication calls.
@@ -145,8 +146,9 @@
Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
"Authentication Mutex lock.");
AutoMutex lock(_authSerializeMutex);
- authenticated = _pamBasicAuthenticatorStandAlone.authenticate(
- userName, password);
+ authenticated =
+ _pamBasicAuthenticatorStandAlone->authenticate(userName,
+ password);
#endif
PEG_METHOD_EXIT();
@@ -155,7 +157,8 @@
Boolean PAMBasicAuthenticator::_authenticateByPAM(
const String& userName,
- const String& password)
+ const String& password,
+ Boolean isRemoteUser)
{
PEG_METHOD_ENTER(TRC_AUTHENTICATION,
"PAMBasicAuthenticator::_authenticateByPAM()");
@@ -165,6 +168,7 @@
pam_handle_t *phandle;
char *name;
APP_DATA mydata;
+ int retcode;
//
// Store the password for PAM authentication
@@ -178,21 +182,38 @@
// Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
// "PAMBasicAuthenticator::_authenticateByPAM() - userName = %s; userPassword = %s",
// (const char *)userName.getCString(), (const char *)password.getCString());
+
+ // NOTE: if any pam call should log anything, our syslog socket will be redirected
+ // to the AUTH facility, so we need to redirect it back after each pam call.
//
//Call pam_start since you need to before making any other PAM calls
//
- if ( ( pam_start(service,
+
+ if ( (retcode = pam_start(service,
(const char *)userName.getCString(), &pconv, &phandle) ) != PAM_SUCCESS )
{
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_start failed: %s", pam_strerror(phandle, retcode));
PEG_METHOD_EXIT();
return (authenticated);
}
+
+ if ( (retcode = pam_set_item(phandle, PAM_TTY, isRemoteUser ? "wbemNetwork" : "wbemLocal")) != PAM_SUCCESS )
+ {
+ pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_set_item(PAM_TTY=wbem) failed: %s", pam_strerror(phandle, retcode));
+ PEG_METHOD_EXIT();
+ return (authenticated);
+ }
//
//Call pam_authenticate to authenticate the user
//
- if ( ( pam_authenticate(phandle, 0) ) == PAM_SUCCESS )
+ if ( ( retcode = pam_authenticate(phandle, 0) ) == PAM_SUCCESS )
{
Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
"pam_authenticate successful.");
@@ -201,22 +222,40 @@
//checking for password and account expiration, as well as verifying access
//hour restrictions.
//
- if ( ( pam_acct_mgmt(phandle, 0) ) == PAM_SUCCESS )
+
+ if ( ( retcode = pam_acct_mgmt(phandle, 0) ) == PAM_SUCCESS )
{
Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
"pam_acct_mgmt successful.");
authenticated = true;
- }
+ }else
+ {
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog(LOG_ERR, "pam_acct_mgmt failed: %s",pam_strerror(phandle, retcode));
+ }
+ }else
+ {
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog(LOG_ERR, "pam_authenticate failed: %s",pam_strerror(phandle, retcode));
}
-
//
//Call pam_end to end our PAM work
//
pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
- PEG_METHOD_EXIT();
+ if ( ! authenticated )
+ syslog(LOG_ERR, "PAM authentication failed for %s user: %s",
+ isRemoteUser ? "remote" : "local",
+ (const char*)userName.getCString()
+ );
+ PEG_METHOD_EXIT();
return (authenticated);
+
}
Boolean PAMBasicAuthenticator::validateUser(const String& userName)
@@ -231,6 +270,7 @@
pam_handle_t *phandle;
char *name;
APP_DATA mydata;
+ int retcode;
const char *service = "wbem";
pconv.conv = PAMBasicAuthenticator::pamValidateUserCallback;
@@ -239,21 +279,43 @@
//
// Call pam_start since you need to before making any other PAM calls
//
- if ( pam_start(service,
- (const char *)userName.getCString(), &pconv, &phandle) != PAM_SUCCESS)
- {
+ if ( (retcode =
+ pam_start(service,(const char *)userName.getCString(), &pconv, &phandle)
+ ) != PAM_SUCCESS
+ )
+ {
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_start() failed: %s", pam_strerror(phandle, retcode));
PEG_METHOD_EXIT();
return (authenticated);
}
+ if ( (retcode = pam_set_item(phandle, PAM_TTY, "wbemLocal")) != PAM_SUCCESS )
+ {
+ pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_set_item(PAM_TTY=wbemLocal) failed: %s", pam_strerror(phandle, retcode));
+ PEG_METHOD_EXIT();
+ return (authenticated);
+ }
//
// Call pam_acct_mgmt, to check if the user account is valid. This includes
// checking for account expiration, as well as verifying access
// hour restrictions.
//
- if ( pam_acct_mgmt(phandle, 0) == PAM_SUCCESS )
- {
+ if ( (retcode = pam_acct_mgmt(phandle, 0)) == PAM_SUCCESS )
+ {
authenticated = true;
+ }else
+ {
+ pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_acct_mgmt() failed: %s", pam_strerror(phandle, retcode));
+ PEG_METHOD_EXIT();
+ return (authenticated);
}
//
@@ -261,6 +323,9 @@
//
pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+
#else
//
// Mutex to Serialize Authentication calls.
--- pegasus-2.5/src/Pegasus/Security/Authentication/BasicAuthenticator.h.local_or_remote_auth 2005-07-12 14:05:09.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Security/Authentication/BasicAuthenticator.h 2005-09-28 16:18:58.000000000 -0400
@@ -65,7 +65,8 @@
*/
virtual Boolean authenticate(
const String& userName,
- const String& password) = 0;
+ const String& password,
+ Boolean isRemoteUser) = 0;
/** Construct and return the HTTP Basic authentication challenge header
@return A string containing the authentication challenge header.
--- pegasus-2.5/src/Pegasus/Common/HTTPMessage.cpp.local_or_remote_auth 2005-05-31 21:51:53.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Common/HTTPMessage.cpp 2005-09-28 16:18:58.000000000 -0400
@@ -101,7 +101,8 @@
message(message_),
queueId(queueId_),
acceptLanguagesDecoded(false),
- contentLanguagesDecoded(false)
+ contentLanguagesDecoded(false),
+ fromRemoteHost(true)
{
if (cimException_)
cimException = *cimException_;
--- pegasus-2.5/src/Pegasus/Common/HTTPMessage.h.local_or_remote_auth 2005-05-12 02:59:56.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Common/HTTPMessage.h 2005-09-28 16:18:58.000000000 -0400
@@ -77,7 +77,8 @@
ContentLanguages contentLanguages;
Boolean acceptLanguagesDecoded;
Boolean contentLanguagesDecoded;
- CIMException cimException;
+ Boolean fromRemoteHost;
+ CIMException cimException;
void parse(
String& startLine,
--- pegasus-2.5/src/Pegasus/Common/AuthenticationInfoRep.cpp.local_or_remote_auth 2005-02-05 17:59:23.000000000 -0500
+++ pegasus-2.5/src/Pegasus/Common/AuthenticationInfoRep.cpp 2005-09-28 16:18:58.000000000 -0400
@@ -55,7 +55,8 @@
_privileged(false),
_authType(String::EMPTY),
_authStatus(NEW_REQUEST),
- _exportConnection(false)
+ _exportConnection(false),
+ _remoteUser(true)
{
PEG_METHOD_ENTER(
TRC_AUTHENTICATION, "AuthenticationInfoRep::AuthenticationInfoRep");
@@ -178,5 +179,14 @@
PEG_METHOD_EXIT();
}
+void AuthenticationInfoRep::setRemoteUser(Boolean remoteUser)
+{
+ PEG_METHOD_ENTER(TRC_AUTHENTICATION,
+ "AuthenticationInfoRep::setRemoteUser");
+
+ _remoteUser = remoteUser;
+
+ PEG_METHOD_EXIT();
+}
PEGASUS_NAMESPACE_END
--- pegasus-2.5/src/Pegasus/Common/AuthenticationInfo.h.local_or_remote_auth 2005-02-05 17:59:23.000000000 -0500
+++ pegasus-2.5/src/Pegasus/Common/AuthenticationInfo.h 2005-09-28 16:18:58.000000000 -0400
@@ -329,6 +329,22 @@
_rep->setClientCertificate(clientCertificate);
}
+ /** Indicate whether the user is Remote
+ */
+ Boolean isRemoteUser() const
+ {
+ _checkRep();
+ return _rep->isRemoteUser();
+ }
+
+ /** Set the Remote User flag
+ */
+ void setRemoteUser(Boolean remoteUser)
+ {
+ _checkRep();
+ _rep->setRemoteUser(remoteUser);
+ }
+
private:
AuthenticationInfo(AuthenticationInfoRep* rep) : _rep(rep)
--- pegasus-2.5/src/Pegasus/Common/AuthenticationInfoRep.h.local_or_remote_auth 2005-02-05 17:59:23.000000000 -0500
+++ pegasus-2.5/src/Pegasus/Common/AuthenticationInfoRep.h 2005-09-28 16:18:58.000000000 -0400
@@ -140,6 +140,14 @@
void setExportConnection(Boolean exportConnection);
+ Boolean isRemoteUser() const
+ {
+ return _remoteUser;
+ }
+
+ void setRemoteUser(Boolean remoteUser);
+
+
//PEP187
SSLCertificateInfo* getClientCertificate()
{
@@ -170,7 +178,8 @@
#endif
Boolean _exportConnection;
- SSLCertificateInfo* _clientCertificate;
+ SSLCertificateInfo* _clientCertificate;
+ Boolean _remoteUser;
};
PEGASUS_NAMESPACE_END
--- pegasus-2.5/src/Pegasus/Common/HTTPConnection.cpp.local_or_remote_auth 2005-08-18 20:24:32.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Common/HTTPConnection.cpp 2005-09-28 16:18:58.000000000 -0400
@@ -1807,6 +1807,30 @@
"_requestCount = %d", _requestCount.value());
message->dest = _outputMessageQueue->getQueueId();
// SendForget(message);
+
+ // Allow authenticators to differentiate Remote and Local users:
+ struct sockaddr_in sin_peer, sin_svr; // don't need to worry about IPv6 yet ...
+ socklen_t slen1=sizeof(struct sockaddr_in), slen2=sizeof(struct sockaddr_in);
+ uint32_t sock = _socket.get()->getSocket() ;
+ memset(&sin_peer,'\0',slen1);
+ memset(&sin_svr, '\0',slen2);
+ if ( ( ::getpeername( sock, (struct sockaddr*)&sin_peer, &slen1) == 0 )
+ ||( ::getsockname( sock, (struct sockaddr*)&sin_svr, &slen2) == 0 )
+ )
+ {
+ if( sin_peer.sin_family == AF_INET )
+ {
+ if( ((ntohl( sin_peer.sin_addr.s_addr ) >> 24) & 0xff) == 127 )
+ // message was sent FROM localhost interface
+ message->fromRemoteHost = false;
+ }
+ if( sin_svr.sin_family == AF_INET )
+ {
+ if( ((ntohl( sin_svr.sin_addr.s_addr ) >> 24) & 0xff) == 127 )
+ // message was sent TO localhost interface
+ message->fromRemoteHost = false;
+ }
+ }
//
// Set the entry status to BUSY.

File diff suppressed because it is too large Load Diff

View File

@ -1,778 +0,0 @@
--- pegasus-2.5/Makefile.ReleaseTest.redhat 2005-05-27 13:29:01.000000000 -0400
+++ pegasus-2.5/Makefile.ReleaseTest 2005-10-03 17:12:17.000000000 -0400
@@ -54,7 +54,7 @@
endif
TEST_BIN_FILES_SRCPATH = $(PEGASUS_HOME)/bin
-TEST_LIB_FILES_SRCPATH = $(PEGASUS_HOME)/lib
+TEST_LIB_FILES_SRCPATH = $(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR)
TEST_MAK_FILES_SRCPATH = $(ROOT)/mak
MAK_FILES = \
@@ -121,7 +121,7 @@
stageTEST:
@$(RMDIRHIER) $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)
@$(MKDIRHIER) $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/bin
- @$(MKDIRHIER) $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/lib
+ @$(MKDIRHIER) $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/$(PEGASUS_ARCH_LIB_DIR)
@$(MKDIRHIER) $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/mak
@$(MAKE) --directory=$(ROOT) -f Makefile.ReleaseTest -s stage_makfiles
@$(MAKE) --directory=$(ROOT) -f Makefile.ReleaseTest -s stage_testproviderfiles
@@ -134,7 +134,7 @@
@$(foreach i, $(MAK_FILES), $(COPY) $(TEST_MAK_FILES_SRCPATH)/$(i) $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/mak/$(i);)
stage_testproviderfiles:
- @$(foreach i, $(PEGASUS_TEST_PROVIDERS), $(COPY) $(TEST_LIB_FILES_SRCPATH)/$(i)$(LIB_SUFFIX) $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/lib/$(i)$(LIB_SUFFIX);)
+ @$(foreach i, $(PEGASUS_TEST_PROVIDERS), $(COPY) $(TEST_LIB_FILES_SRCPATH)/$(i)$(LIB_SUFFIX) $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/$(PEGASUS_ARCH_LIB_DIR)/$(i)$(LIB_SUFFIX);)
stage_prestarttests:
@$(foreach i, $(PRESTARTTEST_FILES), $(COPY) $(TEST_BIN_FILES_SRCPATH)/$(i) $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/bin/$(i);)
@@ -157,7 +157,7 @@
createMakefile_providerlinks:
@$(ECHO-E) "create_providerlinks:" >> $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/Makefile
- @$(foreach i, $(PEGASUS_TEST_PROVIDERS), $(ECHO-E) "\t@$(MAKE) createlink OBJECT=$(PEGASUS_TEST_DIR)/lib/$(i)$(LIB_SUFFIX) LINKNAME=$(PEGASUS_PROVIDER_LIB_DIR)/$(i)$(LIB_LINK_SUFFIX)" >> $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/Makefile ;)
+ @$(foreach i, $(PEGASUS_TEST_PROVIDERS), $(ECHO-E) "\t@$(MAKE) createlink OBJECT=$(PEGASUS_TEST_DIR)/$(PEGASUS_ARCH_LIB_DIR)/$(i)$(LIB_SUFFIX) LINKNAME=$(PEGASUS_PROVIDER_LIB_DIR)/$(i)$(LIB_LINK_SUFFIX)" >> $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/Makefile ;)
@$(ECHO-E) "" >> $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/Makefile
@$(ECHO-E) "remove_providerlinks:" >> $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/Makefile
@$(foreach i, $(PEGASUS_TEST_PROVIDERS), $(ECHO-E) "\trm -f $(PEGASUS_PROVIDER_LIB_DIR)/$(i)$(LIB_LINK_SUFFIX)" >> $(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/Makefile ;)
@@ -234,7 +234,7 @@
@$(MAKE) --directory=$(ROOT) -f Makefile.ReleaseTest -s preinstall_setreleasepermissions
preinstall_setreleasepermissions:
- @$(foreach i, $(PEGASUS_TEST_PROVIDERS), $(MAKE) -f $(ROOT)/Makefile.ReleaseTest setpermissions PERMISSIONS="$(Prwxr_xr_x)" OWNER="$(INSTALL_USR)" GROUP="$(INSTALL_GRP)" OBJECT=$(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/lib/$(i)$(LIB_SUFFIX);)
+ @$(foreach i, $(PEGASUS_TEST_PROVIDERS), $(MAKE) -f $(ROOT)/Makefile.ReleaseTest setpermissions PERMISSIONS="$(Prwxr_xr_x)" OWNER="$(INSTALL_USR)" GROUP="$(INSTALL_GRP)" OBJECT=$(PEGASUS_STAGING_DIR)$(PEGASUS_TEST_DIR)/$(PEGASUS_ARCH_LIB_DIR)/$(i)$(LIB_SUFFIX);)
_append_preunSectionToSpecFile:
@$(ECHO-E) "%if %{PEGASUS_BUILD_TEST_RPM}" >> $(PEGASUS_RPM_SPEC_FILE_PATH)
@@ -253,13 +253,13 @@
@$(ECHO-E) "# Test Files" >> $(PEGASUS_RPM_SPEC_FILE_PATH)
@$(ECHO-E) "#" >> $(PEGASUS_RPM_SPEC_FILE_PATH)
@$(ECHO-E) "%dir %attr($(Pr_xr_xr_x), $(INSTALL_USR),$(INSTALL_GRP)) $(PEGASUS_TEST_DIR)" >> $(PEGASUS_RPM_SPEC_FILE_PATH)
- @$(ECHO-E) "%dir %attr($(Pr_xr_xr_x), $(INSTALL_USR),$(INSTALL_GRP)) $(PEGASUS_TEST_DIR)/lib" >> $(PEGASUS_RPM_SPEC_FILE_PATH)
+ @$(ECHO-E) "%dir %attr($(Pr_xr_xr_x), $(INSTALL_USR),$(INSTALL_GRP)) $(PEGASUS_TEST_DIR)/$(PEGASUS_ARCH_LIB_DIR)" >> $(PEGASUS_RPM_SPEC_FILE_PATH)
@$(ECHO-E) "%dir %attr($(Pr_xr_xr_x), $(INSTALL_USR),$(INSTALL_GRP)) $(PEGASUS_TEST_DIR)/bin" >> $(PEGASUS_RPM_SPEC_FILE_PATH)
@$(ECHO-E) "%dir %attr($(Pr_xr_xr_x), $(INSTALL_USR),$(INSTALL_GRP)) $(PEGASUS_TEST_DIR)/mak" >> $(PEGASUS_RPM_SPEC_FILE_PATH)
@$(foreach i, $(MAK_FILES), $(ECHO-E) \
"%attr($(Pr__r__r__),$(INSTALL_USR),$(INSTALL_GRP)) $(PEGASUS_TEST_DIR)/mak/$(i)" >> $(PEGASUS_RPM_SPEC_FILE_PATH);)
@$(foreach i, $(PEGASUS_TEST_PROVIDERS), $(ECHO-E) \
- "%attr($(Pr_xr_xr_x),$(INSTALL_USR),$(INSTALL_GRP)) $(PEGASUS_TEST_DIR)/lib/$(i)$(LIB_SUFFIX)" >> $(PEGASUS_RPM_SPEC_FILE_PATH);)
+ "%attr($(Pr_xr_xr_x),$(INSTALL_USR),$(INSTALL_GRP)) $(PEGASUS_TEST_DIR)/$(PEGASUS_ARCH_LIB_DIR)/$(i)$(LIB_SUFFIX)" >> $(PEGASUS_RPM_SPEC_FILE_PATH);)
@$(foreach i, $(PRESTARTTEST_FILES), $(ECHO-E) \
"%attr($(Pr_xr_xr_x),$(INSTALL_USR),$(INSTALL_GRP)) $(PEGASUS_TEST_DIR)/bin/$(i)" >> $(PEGASUS_RPM_SPEC_FILE_PATH);)
@$(foreach i, $(POSTSTARTTEST_FILES), $(ECHO-E) \
--- pegasus-2.5/Makefile.Release.redhat 2005-08-17 17:00:43.000000000 -0400
+++ pegasus-2.5/Makefile.Release 2005-10-03 17:12:17.000000000 -0400
@@ -481,13 +481,13 @@
$(MAKE) -f $(ROOT)/Makefile.Release setpermissions PERMISSIONS="$(Prwxr_xr_x)" OWNER="$(INSTALL_USR)" GROUP="$(INSTALL_GRP)" OBJECT=$(PEGASUS_STAGING_DIR)$(PEGASUS_LOCAL_AUTH_DIR)
stage_PegasusLibraryDirectoryFiles: FORCE
- $(foreach i, $(PEGASUS_LIBRARIES), $(COPY) $(PEGASUS_HOME)/lib/$(i)$(LIB_SUFFIX) $(PEGASUS_STAGING_DIR)$(PEGASUS_DEST_LIB_DIR)/$(i)$(LIB_SUFFIX);)
+ $(foreach i, $(PEGASUS_LIBRARIES), $(COPY) $(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR)/$(i)$(LIB_SUFFIX) $(PEGASUS_STAGING_DIR)$(PEGASUS_DEST_LIB_DIR)/$(i)$(LIB_SUFFIX);)
$(foreach i, $(PEGASUS_LIBRARY_LINKS), $(MAKE) -f $(ROOT)/Makefile.Release createlink OBJECT=$(i)$(LIB_SUFFIX) LINKNAME=$(PEGASUS_STAGING_DIR)$(PEGASUS_DEST_LIB_DIR)/$(i)$(LIB_LINK_SUFFIX);)
setpermissions_PegasusLibraryDirectoryFiles: FORCE
$(foreach i, $(PEGASUS_LIBRARIES), $(MAKE) -f $(ROOT)/Makefile.Release setpermissions PERMISSIONS="$(Prwxr_xr_x)" OWNER="$(INSTALL_USR)" GROUP="$(INSTALL_GRP)" OBJECT=$(PEGASUS_STAGING_DIR)$(PEGASUS_DEST_LIB_DIR)/$(i)$(LIB_SUFFIX);)
stage_PegasusProviderLibraryDirectoryFiles: FORCE
- $(foreach i, $(PEGASUS_PROVIDERS), $(COPY) $(PEGASUS_HOME)/lib/$(i)$(LIB_SUFFIX) $(PEGASUS_STAGING_DIR)$(PEGASUS_PROVIDER_LIB_DIR)/$(i)$(LIB_SUFFIX);)
+ $(foreach i, $(PEGASUS_PROVIDERS), $(COPY) $(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR)/$(i)$(LIB_SUFFIX) $(PEGASUS_STAGING_DIR)$(PEGASUS_PROVIDER_LIB_DIR)/$(i)$(LIB_SUFFIX);)
$(foreach i, $(PEGASUS_PROVIDERS), $(MAKE) -f $(ROOT)/Makefile.Release createlink OBJECT=$(i)$(LIB_SUFFIX) LINKNAME=$(PEGASUS_STAGING_DIR)$(PEGASUS_PROVIDER_LIB_DIR)/$(i)$(LIB_LINK_SUFFIX);)
setpermissions_PegasusProviderLibraryDirectoryFiles: FORCE
--- pegasus-2.5/env_var_Linux.status.redhat 2005-09-02 14:40:58.000000000 -0400
+++ pegasus-2.5/env_var_Linux.status 2005-10-03 17:12:17.000000000 -0400
@@ -9,6 +9,7 @@
PEGASUS_OVERRIDE_PRODUCT_ID=yes
PEGASUS_PRODUCT_NAME="OpenPegasus"
PEGASUS_PRODUCT_VERSION="2.5.0"
+PEGASUS_RPM_VERSION="2.5"
PEGASUS_PRODUCT_STATUS=""
PAM_CONFIG_DIR=/etc/pam.d
@@ -25,32 +26,31 @@
PEGASUS_HAS_SSL=yes
PEGASUS_NOASSERTS=yes
PEGASUS_PAM_AUTHENTICATION=true
-PEGASUS_USE_PAM_STANDALONE_PROC=true
PEGASUS_USE_RELEASE_CONFIG_OPTIONS=true
PEGASUS_USE_RELEASE_DIRS=true
PEGASUS_USE_SYSLOGS=true
PEGASUS_CIM_SCHEMA=CIM29
-PEGASUS_PROD_DIR = /opt/tog-pegasus
-PEGASUS_PRODSHARE_DIR = $(PEGASUS_PROD_DIR)/share
-PEGASUS_DOC_DIR = $(PEGASUS_PRODSHARE_DIR)/doc
-PEGASUS_MAN_DIR = $(PEGASUS_PRODSHARE_DIR)/man
+PEGASUS_PROD_DIR = /usr
+PEGASUS_PRODSHARE_DIR = $(PEGASUS_PROD_DIR)/share/Pegasus
+PEGASUS_DOC_DIR = /usr/share/doc/tog-pegasus-$(PEGASUS_RPM_VERSION)
+PEGASUS_MAN_DIR = /usr/share/man
PEGASUS_MANUSER_DIR = $(PEGASUS_MAN_DIR)/man1
PEGASUS_MANADMIN_DIR = $(PEGASUS_MAN_DIR)/man8
-PEGASUS_MOF_DIR = $(PEGASUS_PROD_DIR)/mof
-PEGASUS_DEST_LIB_DIR = $(PEGASUS_PROD_DIR)/lib
-PEGASUS_PROVIDER_DIR = $(PEGASUS_PROD_DIR)/providers
-PEGASUS_PROVIDER_LIB_DIR = $(PEGASUS_PROVIDER_DIR)/lib
+PEGASUS_MOF_DIR = $(PEGASUS_PRODSHARE_DIR)/mof
+PEGASUS_DEST_LIB_DIR = $(PEGASUS_PROD_DIR)/$(PEGASUS_ARCH_LIB_DIR)
+PEGASUS_PROVIDER_DIR = $(PEGASUS_DEST_LIB_DIR)/Pegasus/providers
+PEGASUS_PROVIDER_LIB_DIR = $(PEGASUS_PROVIDER_DIR)
PEGASUS_SBIN_DIR = $(PEGASUS_PROD_DIR)/sbin
PEGASUS_BIN_DIR = $(PEGASUS_PROD_DIR)/bin
-PEGASUS_VARDATA_DIR = /var/opt/tog-pegasus
+PEGASUS_VARDATA_DIR = /var/lib/Pegasus
PEGASUS_REPOSITORY_PARENT_DIR = $(PEGASUS_VARDATA_DIR)
PEGASUS_REPOSITORY_DIR = $(PEGASUS_REPOSITORY_PARENT_DIR)/repository
PEGASUS_PREV_REPOSITORY_DIR = $(PEGASUS_REPOSITORY_PARENT_DIR)/prev_repository
-PEGASUS_CONFIG_DIR = /etc/opt/tog-pegasus
+PEGASUS_CONFIG_DIR = /etc/Pegasus
PEGASUS_VARRUN_DIR = /var/run/tog-pegasus
PEGASUS_CIMSERVER_START_FILE = $(PEGASUS_VARRUN_DIR)/cimserver.pid
-PEGASUS_LOCAL_DOMAIN_SOCKET_DIR = $(PEGASUS_VARRUN_DIR)/socket
+PEGASUS_LOCAL_DOMAIN_SOCKET_DIR = $(PEGASUS_VARRUN_DIR)
PEGASUS_LOCAL_DOMAIN_SOCKET_PATH = $(PEGASUS_LOCAL_DOMAIN_SOCKET_DIR)/cimxml.socket
PEGASUS_VARDATA_CACHE_DIR = $(PEGASUS_VARDATA_DIR)/cache
PEGASUS_LOCAL_AUTH_DIR = $(PEGASUS_VARDATA_CACHE_DIR)/localauth
@@ -63,11 +63,11 @@
PEGASUS_SSL_CERT_FILE = server.pem
PEGASUS_SSL_TRUSTSTORE = client.pem
-PEGASUS_SAMPLES_DIR = $(PEGASUS_PROD_DIR)/samples
+PEGASUS_SAMPLES_DIR = $(PEGASUS_PRODSHARE_DIR)/samples
PEGASUS_INCLUDE_DIR = $(PEGASUS_PROD_DIR)/include
-PEGASUS_HTML_DIR = $(PEGASUS_PROD_DIR)/html
+PEGASUS_HTML_DIR = $(PEGASUS_PRODSHARE_DIR)/html
-PEGASUS_TEST_DIR = $(PEGASUS_PROD_DIR)/test
+PEGASUS_TEST_DIR = $(PEGASUS_PRODSHARE_DIR)/test
PEGASUS_TEST_REPOSITORY_DIR = $(PEGASUS_VARDATA_DIR)
PEGASUS_TEST_REPOSITORY_NAME = testrepository
--- pegasus-2.5/mak/objects-unix.mak.redhat 2005-05-12 11:27:28.000000000 -0400
+++ pegasus-2.5/mak/objects-unix.mak 2005-10-03 17:12:17.000000000 -0400
@@ -50,12 +50,12 @@
ifeq ($(_NO_TMP_O), yes)
$(OBJ_DIR)/%.o: %.cpp $(ERROR)
- $(CXX) -c -o $@ $(FLAGS) $(EXTRA_CXX_FLAGS) $(LOCAL_DEFINES) $(DEFINES) $(SYS_INCLUDES) $(INCLUDES) $*.cpp
+ $(CXX) -c -o $@ $(FLAGS) $(EXTRA_CXX_FLAGS) $(LOCAL_DEFINES) $(DEFINES) $(INCLUDES) $(SYS_INCLUDES) $*.cpp
@ $(TOUCH) $@
@ $(ECHO)
else
$(OBJ_DIR)/%.o: %.cpp $(ERROR)
- $(CXX) -c -o $(_TMP_O) $(FLAGS) $(EXTRA_CXX_FLAGS) $(LOCAL_DEFINES) $(DEFINES) $(SYS_INCLUDES) $(INCLUDES) $*.cpp
+ $(CXX) -c -o $(_TMP_O) $(FLAGS) $(EXTRA_CXX_FLAGS) $(LOCAL_DEFINES) $(DEFINES) $(INCLUDES) $(SYS_INCLUDES) $*.cpp
@ $(COPY) $(_TMP_O) $@
@ $(RM) $(_TMP_O)
@ $(TOUCH) $@
@@ -64,12 +64,12 @@
ifeq ($(_NO_TMP_O), yes)
$(OBJ_DIR)/%.o: %.c $(ERROR)
- $(CC) -c -o $@ $(FLAGS) $(EXTRA_C_FLAGS) $(LOCAL_DEFINES) $(DEFINES) $(SYS_INCLUDES) $(INCLUDES) $*.c
+ $(CC) -c -o $@ $(FLAGS) $(EXTRA_C_FLAGS) $(LOCAL_DEFINES) $(DEFINES) $(INCLUDES) $(SYS_INCLUDES) $*.c
@ $(TOUCH) $@
@ $(ECHO)
else
$(OBJ_DIR)/%.o: %.c $(ERROR)
- $(CC) -c -o $(_TMP_O) $(FLAGS) $(EXTRA_C_FLAGS) $(LOCAL_DEFINES) $(DEFINES) $(SYS_INCLUDES) $(INCLUDES) $*.c
+ $(CC) -c -o $(_TMP_O) $(FLAGS) $(EXTRA_C_FLAGS) $(LOCAL_DEFINES) $(DEFINES) $(INCLUDES) $(SYS_INCLUDES) $*.c
@ $(COPY) $(_TMP_O) $@
@ $(RM) $(_TMP_O)
@ $(TOUCH) $@
--- pegasus-2.5/mak/config-linux.mak.redhat 2005-05-12 11:27:28.000000000 -0400
+++ pegasus-2.5/mak/config-linux.mak 2005-10-03 17:12:17.000000000 -0400
@@ -76,10 +76,12 @@
SYS_LIBS = -ldl -lpthread
+PEGASUS_INSTALL = /usr/bin/install
+
# Build using fixed release settings
#
ifdef PEGASUS_USE_RELEASE_DIRS
- PEGASUS_DEST_LIB_DIR=/opt/tog-pegasus/lib
+ PEGASUS_DEST_LIB_DIR=/usr/$(PEGASUS_ARCH_LIB_DIR)
endif
# PAM support
@@ -102,7 +104,7 @@
ifdef PEGASUS_DEBUG
FLAGS += -g -fPIC -W -Wall -Wno-unused -D_GNU_SOURCE -DTHREAD_SAFE -D_REENTRANT
else
-FLAGS += -fPIC -W -Wall -Wno-unused -D_GNU_SOURCE -DTHREAD_SAFE -D_REENTRANT -s -fno-enforce-eh-specs
+FLAGS += -fPIC -W -Wall -Wno-unused -D_GNU_SOURCE -DTHREAD_SAFE -D_REENTRANT -fno-enforce-eh-specs
ifdef PEGASUS_OPTIMIZE_FOR_SIZE
FLAGS += -Os
else
@@ -152,7 +154,7 @@
SYS_INCLUDES += -I${ICU_ROOT}/source/common -I${ICU_ROOT}/source/i18n
DEFINES += -DPEGASUS_HAS_ICU
- EXTRA_LIBRARIES += -L$(ICU_INSTALL)/lib -licuuc -licui18n -licudata
+ EXTRA_LIBRARIES += -L$(ICU_INSTALL)/$(PEGASUS_ARCH_LIB_DIR) -licuuc -licui18n -licudata
endif
endif
--- pegasus-2.5/mak/SDKMakefile.redhat 2005-07-15 15:46:17.000000000 -0400
+++ pegasus-2.5/mak/SDKMakefile 2005-10-03 17:12:17.000000000 -0400
@@ -382,10 +382,10 @@
@$(MAKE) --directory=$(PEGASUS_ROOT)/mak -f SDKMakefile -i deregisterproviders
@$(MAKE) --directory=$(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR) -f Makefile clean \
PEGASUS_SAMPLES_DIR=$(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR) \
- PEGASUS_PROVIDER_LIB_DIR=$(PEGASUS_HOME)/lib
+ PEGASUS_PROVIDER_LIB_DIR=$(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR)
@$(MAKE) --directory=$(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR) -f Makefile all \
- PEGASUS_PROVIDER_LIB_DIR=$(PEGASUS_HOME)/lib PEGASUS_INCLUDE_DIR=$(PEGASUS_STAGING_DIR)$(PEGASUS_INCLUDE_DIR) \
- PEGASUS_DEST_LIB_DIR=$(PEGASUS_HOME)/lib PEGASUS_SAMPLES_DIR=$(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR) \
+ PEGASUS_PROVIDER_LIB_DIR=$(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR) PEGASUS_INCLUDE_DIR=$(PEGASUS_STAGING_DIR)$(PEGASUS_INCLUDE_DIR) \
+ PEGASUS_DEST_LIB_DIR=$(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR) PEGASUS_SAMPLES_DIR=$(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR) \
PEGASUS_INDICATION_CONSUMER_LOG_DIR=$(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR)/Providers/DefaultC++/SimpleDisplayConsumer
@$(MAKE) --directory=$(PEGASUS_STAGING_DIR)$(PEGASUS_SAMPLES_DIR)/Providers/Load -f Makefile createrepository \
PEGASUS_MOF_DIR=$(PEGASUS_ROOT)/Schemas PEGASUS_BIN_DIR=$(PEGASUS_HOME)bin
--- pegasus-2.5/mak/config.mak.redhat 2005-08-12 13:52:31.000000000 -0400
+++ pegasus-2.5/mak/config.mak 2005-10-03 17:12:17.000000000 -0400
@@ -85,7 +85,7 @@
OBJ_DIR = $(HOME_DIR)/obj/$(DIR)
BIN_DIR = $(HOME_DIR)/bin
-LIB_DIR = $(HOME_DIR)/lib
+LIB_DIR = $(HOME_DIR)/$(PEGASUS_ARCH_LIB_DIR)
# l10n
# define the location for the compiled messages
@@ -544,7 +544,7 @@
# Unless otherwise specified, Pegasus libraries go in $(PEGASUS_HOME)/lib
ifndef PEGASUS_DEST_LIB_DIR
- PEGASUS_DEST_LIB_DIR = lib
+ PEGASUS_DEST_LIB_DIR = $(PEGASUS_ARCH_LIB_DIR)
endif
ifeq ($(OS),VMS)
--- pegasus-2.5/mak/program-unix.mak.redhat 2005-05-12 11:27:28.000000000 -0400
+++ pegasus-2.5/mak/program-unix.mak 2005-10-03 17:14:17.000000000 -0400
@@ -28,6 +28,12 @@
#//==============================================================================
INCLUDES = -I$(ROOT)/src $(EXTRA_INCLUDES)
+ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU
+ ifdef PEGASUS_EXE_LINK_FLAGS
+ EXTRA_LINK_FLAGS += $(PEGASUS_EXE_LINK_FLAGS)
+ endif
+endif
+
TMP_OBJECTS = $(foreach i,$(SOURCES),$(OBJ_DIR)/$i)
ifeq ($(OS_TYPE),windows)
@@ -56,7 +62,7 @@
ifdef PEGASUS_HAS_MESSAGES
ifdef ICU_ROOT
ifdef ICU_INSTALL
- SYS_LIBS += -L${ICU_INSTALL}/lib -licui18n -licuuc
+ SYS_LIBS += -L${ICU_INSTALL}/$(PEGASUS_ARCH_LIB_DIR) -licui18n -licuuc
endif
endif
endif
@@ -90,17 +96,17 @@
ifdef ICU_ROOT
ifdef ICU_INSTALL
ifdef PEGASUS_USE_RELEASE_DIRS
- $(LINK_WRAPPER) $(CXX) $(FLAGS) $(EXTRA_LINK_FLAGS) -Xlinker -rpath -Xlinker $(PEGASUS_DEST_LIB_DIR) -Xlinker -rpath-link -Xlinker $(LIB_DIR) -Xlinker -rpath -Xlinker ${ICU_INSTALL}/lib -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
+ $(LINK_WRAPPER) $(CXX) $(FLAGS) $(EXTRA_LINK_FLAGS) -Xlinker -rpath -Xlinker $(PEGASUS_DEST_LIB_DIR) -Xlinker -rpath-link -Xlinker $(LIB_DIR) -Xlinker -rpath -Xlinker ${ICU_INSTALL}/$(PEGASUS_ARCH_LIB_DIR) -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
else
- $(LINK_WRAPPER) $(CXX) $(FLAGS) $(EXTRA_LINK_FLAGS) -Xlinker -rpath -Xlinker $(LIB_DIR) -Xlinker -rpath -Xlinker ${ICU_INSTALL}/lib -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
+ $(LINK_WRAPPER) $(CXX) $(FLAGS) $(EXTRA_LINK_FLAGS) -Xlinker -rpath -Xlinker $(LIB_DIR) -Xlinker -rpath -Xlinker ${ICU_INSTALL}/$(PEGASUS_ARCH_LIB_DIR) -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
endif
endif
endif
else
ifdef PEGASUS_USE_RELEASE_DIRS
- $(LINK_WRAPPER) $(CXX) $(FLAGS) $(EXTRA_LINK_FLAGS) -Xlinker -rpath -Xlinker $(PEGASUS_DEST_LIB_DIR) -Xlinker -rpath-link -Xlinker $(LIB_DIR) -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
+ $(LINK_WRAPPER) $(CXX) $(FLAGS) $(EXTRA_LINK_FLAGS) -L$(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR) -Xlinker -rpath-link -Xlinker $(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
else
- $(LINK_WRAPPER) $(CXX) $(FLAGS) $(EXTRA_LINK_FLAGS) -Xlinker -rpath -Xlinker $(LIB_DIR) -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
+ $(LINK_WRAPPER) $(CXX) $(FLAGS) $(EXTRA_LINK_FLAGS) -L$(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR) -Xlinker -rpath-link -Xlinker $(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
endif
endif
else
@@ -109,11 +115,11 @@
ifdef PEGASUS_HAS_MESSAGES
ifdef ICU_ROOT
ifdef ICU_INSTALL
- $(LINK_WRAPPER) $(CXX) -Wl,-brtl -blibpath:/usr/linux/lib:/usr/lib:/lib:$(ICU_INSTALL)/lib -Wl,-bhalt:$(AIX_LD_HALT) $(FLAGS) $(EXTRA_LINK_FLAGS) -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
+ $(LINK_WRAPPER) $(CXX) -Wl,-brtl -blibpath:/usr/linux/$(PEGASUS_ARCH_LIB_DIR):/usr/$(PEGASUS_ARCH_LIB_DIR):/$(PEGASUS_ARCH_LIB_DIR):$(ICU_INSTALL)/$(PEGASUS_ARCH_LIB_DIR) -Wl,-bhalt:$(AIX_LD_HALT) $(FLAGS) $(EXTRA_LINK_FLAGS) -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
endif
endif
else
- $(LINK_WRAPPER) $(CXX) -Wl,-brtl -blibpath:/usr/linux/lib:/usr/lib:/lib -Wl,-bhalt:$(AIX_LD_HALT) $(FLAGS) $(EXTRA_LINK_FLAGS) -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
+ $(LINK_WRAPPER) $(CXX) -Wl,-brtl -blibpath:/usr/linux/$(PEGASUS_ARCH_LIB_DIR):/usr/$(PEGASUS_ARCH_LIB_DIR):/$(PEGASUS_ARCH_LIB_DIR):$(ICU_INSTALL)/$(PEGASUS_ARCH_LIB_DIR) -Wl,-bhalt:$(AIX_LD_HALT) $(FLAGS) $(EXTRA_LINK_FLAGS) -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
endif
else
$(LINK_WRAPPER) $(CXX) -Wl,-brtl -Wl,-bhalt:$(AIX_LD_HALT) $(FLAGS) $(EXTRA_LINK_FLAGS) -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
@@ -147,3 +153,5 @@
-include $(OBJ_DIR)/depend.mak
include $(ROOT)/mak/misc.mak
+
+include $(ROOT)/mak/install-program-unix.mak
--- pegasus-2.5/mak/library-unix.mak.redhat 2005-05-12 11:27:28.000000000 -0400
+++ pegasus-2.5/mak/library-unix.mak 2005-10-03 17:14:54.000000000 -0400
@@ -32,11 +32,11 @@
ifdef PEGASUS_HAS_MESSAGES
ifdef ICU_ROOT
ifdef ICU_INSTALL
- LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -blibpath:/usr/linux/lib:/usr/lib:/lib:$(ICU_INSTALL)/lib -Wl,-bhalt:$(AIX_LD_HALT)
+ LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -blibpath:/usr/linux/$(PEGASUS_ARCH_LIB_DIR):/usr/$(PEGASUS_ARCH_LIB_DIR):/$(PEGASUS_ARCH_LIB_DIR):$(ICU_INSTALL)/$(PEGASUS_ARCH_LIB_DIR) -Wl,-bhalt:$(AIX_LD_HALT)
endif
endif
else
- LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -blibpath:/usr/linux/lib:/usr/lib:/lib -Wl,-bhalt:$(AIX_LD_HALT)
+ LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -blibpath:/usr/linux/$(PEGASUS_ARCH_LIB_DIR):/usr/$(PEGASUS_ARCH_LIB_DIR):/$(PEGASUS_ARCH_LIB_DIR) -Wl,-bhalt:$(AIX_LD_HALT)
endif
else
LINK_ARGUMENTS = -qmkshrobj=$(AIX_LIB_PRIORITY) -Wl,-bhalt:$(AIX_LD_HALT)
@@ -56,12 +56,12 @@
endif
ifeq ($(PEGASUS_SUPPORTS_DYNLIB),yes)
ifdef PEGASUS_USE_RELEASE_DIRS
- LINK_COMMAND += -Wl,+b$(PEGASUS_DEST_LIB_DIR):/usr/lib
+ LINK_COMMAND += -Wl,+b$(PEGASUS_DEST_LIB_DIR):/usr/$(PEGASUS_ARCH_LIB_DIR)
ifeq ($(PEGASUS_PLATFORM), HPUX_PARISC_ACC)
- LINK_COMMAND += -Wl,+cdp,$(PEGASUS_PLATFORM_SDKROOT)/usr/lib:/usr/lib -Wl,+cdp,$(PEGASUS_HOME)/lib:$(PEGASUS_DEST_LIB_DIR)
+ LINK_COMMAND += -Wl,+cdp,$(PEGASUS_PLATFORM_SDKROOT)/usr/$(PEGASUS_ARCH_LIB_DIR):/usr/$(PEGASUS_ARCH_LIB_DIR) -Wl,+cdp,$(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR):$(PEGASUS_DEST_LIB_DIR)
endif
else
- LINK_COMMAND += -Wl,+b$(LIB_DIR):/usr/lib
+ LINK_COMMAND += -Wl,+b$(LIB_DIR):/usr/$(PEGASUS_ARCH_LIB_DIR)
endif
endif
LINK_COMMAND += -Wl,+s
@@ -79,10 +79,10 @@
ifneq ($(PEGASUS_PLATFORM),DARWIN_PPC_GNU)
ifdef PEGASUS_USE_RELEASE_DIRS
LINK_COMMAND = $(CXX) -shared
- LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath -Xlinker $(PEGASUS_DEST_LIB_DIR)
+ LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -L$(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR) -Xlinker -rpath-link -Xlinker $(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
else
LINK_COMMAND = $(CXX) -shared
- LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath -Xlinker $(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
+ LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -L$(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR) -Xlinker -rpath-link -Xlinker $(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
endif
else
LINK_COMMAND = $(CXX) -dynamiclib
@@ -164,3 +164,5 @@
ln -f -s $(LIBRARY)$(SUFFIX) $(LIBRARY).$(PLATFORM_SUFFIX)
FILES_TO_CLEAN = $(OBJECTS) $(FULL_LIB)
+
+include $(ROOT)/mak/install-library-unix.mak
--- pegasus-2.5/rpm/wbem.redhat 2003-03-13 12:25:15.000000000 -0500
+++ pegasus-2.5/rpm/wbem 2005-10-03 17:12:17.000000000 -0400
@@ -1,13 +1,7 @@
#%PAM-1.0
-auth required /lib/security/pam_env.so
-auth sufficient /lib/security/pam_unix.so likeauth nullok
-auth required /lib/security/pam_deny.so
-
-account required /lib/security/pam_unix.so
-
-password required /lib/security/pam_cracklib.so retry=3 type=
-password sufficient /lib/security/pam_unix.so nullok use_authtok md5 shadow
-password required /lib/security/pam_deny.so
-
-session required /lib/security/pam_limits.so
-session required /lib/security/pam_unix.so
+auth include system-auth
+account required pam_access.so accessfile=/etc/Pegasus/access.conf
+account include system-auth
+password include system-auth
+session include system-auth
+session required pam_loginuid.so
--- pegasus-2.5/rpm/tog-pegasus.rc.redhat 2005-05-29 02:43:30.000000000 -0400
+++ pegasus-2.5/rpm/tog-pegasus.rc 2005-10-03 17:12:17.000000000 -0400
@@ -1,34 +1,28 @@
#! /bin/sh
-#//%2005////////////////////////////////////////////////////////////////////////
-#//
-#// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
-#// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
-#// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
-#// IBM Corp.; EMC Corporation, The Open Group.
-#// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
-#// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
-#// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
-#// EMC Corporation; VERITAS Software Corporation; The Open Group.
-#//
-#// Permission is hereby granted, free of charge, to any person obtaining a copy
-#// of this software and associated documentation files (the "Software"), to
-#// deal in the Software without restriction, including without limitation the
-#// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-#// sell copies of the Software, and to permit persons to whom the Software is
-#// furnished to do so, subject to the following conditions:
-#//
-#// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
-#// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
-#// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
-#// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-#// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-#// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-#// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-#// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#//
-#//==============================================================================
-#//
-#//%/////////////////////////////////////////////////////////////////////////////
+#%/////////////////////////////////////////////////////////////////////////////
+#
+# Copyright (c) 2004 BMC Software, Hewlett-Packard Company, IBM,
+# The Open Group, Tivoli Systems
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
+# ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
+# "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+# LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+#==============================================================================
+#
+#%/////////////////////////////////////////////////////////////////////////////
### BEGIN INIT INFO
# Provides: tog-pegasus
@@ -40,7 +34,10 @@
# Description: init script for Pegasus CIM server
### END INIT INFO
-CIMSERVER_BIN=/opt/tog-pegasus/sbin/cimserver
+CIMSERVER_BIN=/usr/sbin/cimserver
+PEGASUS_SSL_CERT_FILE=${PEGASUS_SSL_CERT_FILE:=server.pem}
+PEGASUS_SSL_KEY_FILE=${PEGASUS_SSL_KEY_FILE:=file.pem}
+PEGASUS_SSL_TRUSTSTORE=${PEGASUS_SSL_TRUSTSTORE:=client.pem}
prog=cimserver
test -x $CIMSERVER_BIN || exit 5
@@ -50,19 +47,22 @@
case "$1" in
start)
+ [ -e /var/run/tog-pegasus/cimxml.socket ] && rm -f /var/run/tog-pegasus/cimxml.socket
echo -n $"Starting up CIM server: "
+ if [ ! -e /etc/Pegasus/ssl.cnf ] || [ ! -e /etc/Pegasus/$PEGASUS_SSL_CERT_FILE ] || [ ! -e /etc/Pegasus/$PEGASUS_SSL_KEY_FILE ] || [ ! -e /etc/Pegasus/$PEGASUS_SSL_TRUSTSTORE ]; then
+ echo "Generating SSL certificates...";
+ /usr/share/Pegasus/scripts/genSSLcerts;
+ fi;
$CIMSERVER_BIN
RETVAL=$?
[ "$RETVAL" -eq 0 ] && log_success_msg $"$prog start" || log_failure_msg $"$prog start"
- echo
;;
-
stop)
echo -n $"Shutting down CIM server: "
killproc cimserver
RETVAL=$?
[ "$RETVAL" -eq 0 ] && log_success_msg $"$prog stop" || log_failure_msg $"$prog stop"
- echo
+ [ "$RETVAL" -eq 0 ] && [ -e /var/run/tog-pegasus/cimxml.socket ] && rm -f /var/run/tog-pegasus/cimxml.socket
;;
status)
pid=`pidofproc $CIMSERVER_BIN`
--- pegasus-2.5/src/Pegasus/ProviderManager2/tests/ProviderManagerModule/ProviderManagerModule.cpp.redhat 2005-04-18 17:18:24.000000000 -0400
+++ pegasus-2.5/src/Pegasus/ProviderManager2/tests/ProviderManagerModule/ProviderManagerModule.cpp 2005-10-03 17:12:17.000000000 -0400
@@ -134,7 +134,7 @@
int main(int argc, char** argv)
{
- const char * verbose = getenv("PEGASUS_TEST_VERBOSE");
+ const char * verbose = getenv("PEGASUS_TEST_VERBOSE"), *p;
const String FILE_NAME =
FileSystem::buildLibraryFileName("TestProviderManager");
@@ -146,7 +146,11 @@
#elif defined (PEGASUS_OS_VMS)
fileName= FILE_NAME;
#else
- fileName=String(getenv("PEGASUS_HOME"))+String("/lib/")+FILE_NAME;
+ fileName= String(getenv("PEGASUS_HOME"))
+ + String("/")
+ + String(((p = getenv("PEGASUS_ARCH_LIB_DIR")) == 0L) ? "lib" : p)
+ + String("/")
+ + FILE_NAME;
#endif
Test1();
--- pegasus-2.5/src/Pegasus/ProviderManager2/CMPI/samples/ProcessIndication/Makefile.redhat 2005-05-12 11:30:52.000000000 -0400
+++ pegasus-2.5/src/Pegasus/ProviderManager2/CMPI/samples/ProcessIndication/Makefile 2005-10-03 17:12:17.000000000 -0400
@@ -29,7 +29,7 @@
# Makefile for CMPIRT_SampleClass library
# Change the following lines to match the values on your system
-PEGDIRLIB=$(PEGASUS_HOME)/lib
+PEGDIRLIB=$(PEGASUS_HOME)/$(PEGASUS_ARCH_LIB_DIR)
# Changes shouldn't be necessary below this line
CFLAGS=-Wall -D_COMPILE_UNIX -g -I. -I../..
--- pegasus-2.5/src/Pegasus/Config/FixedPropertyTableLinux.h.redhat 2005-07-15 19:02:21.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Config/FixedPropertyTableLinux.h 2005-10-03 17:12:17.000000000 -0400
@@ -45,19 +45,19 @@
{"enableBinaryRepository", "false"},
#endif
#if defined(PEGASUS_USE_RELEASE_DIRS) && !defined(PEGASUS_OS_LSB)
- {"traceFilePath", "/var/opt/tog-pegasus/cache/trace/cimserver.trc"},
+ {"traceFilePath", "/var/lib/Pegasus/cache/cimserver.trc"},
#if !defined(PEGASUS_USE_SYSLOGS)
- {"logdir", "/var/opt/tog-pegasus/log"},
+ {"logdir", "/var/log/Pegasus"},
#endif
- {"passwordFilePath", "/etc/opt/tog-pegasus/cimserver.passwd"},
- {"sslCertificateFilePath", "/etc/opt/tog-pegasus/server.pem"},
- {"sslKeyFilePath", "/etc/opt/tog-pegasus/file.pem"},
- {"sslTrustStore", "/etc/opt/tog-pegasus/cimserver_trust"},
- {"exportSSLTrustStore", "/etc/opt/tog-pegasus/indication_trust"},
- {"crlStore", "/etc/opt/tog-pegasus/crl"},
- {"repositoryDir", "/var/opt/tog-pegasus/repository"},
- {"providerDir", "/opt/tog-pegasus/providers/lib:/usr/lib/cmpi"},
- {"messageDir", "/opt/tog-pegasus/share/locale/ICU_Messages"},
+ {"passwordFilePath", "/etc/Pegasus/cimserver.passwd"},
+ {"sslCertificateFilePath", "/etc/Pegasus/server.pem"},
+ {"sslKeyFilePath", "/etc/Pegasus/file.pem"},
+ {"sslTrustStore", "/etc/Pegasus/cimserver_trust"},
+ {"exportSSLTrustStore", "/etc/Pegasus/indication_trust"},
+ {"crlStore", "/etc/Pegasus/crl"},
+ {"repositoryDir", "/var/lib/Pegasus/repository"},
+ {"providerDir", PEGASUS_DEST_LIB_DIR "/Pegasus/providers"},
+ {"messageDir", "/usr/share/locale"},
#endif
#if defined(PEGASUS_USE_RELEASE_DIRS) && defined(PEGASUS_OS_LSB)
{"traceFilePath", "/var/opt/lsb-pegasus/cache/cimserver.trc"},
--- pegasus-2.5/src/Pegasus/Config/ConfigFileDirLinux.h.redhat 2005-02-05 18:00:07.000000000 -0500
+++ pegasus-2.5/src/Pegasus/Config/ConfigFileDirLinux.h 2005-10-03 17:12:17.000000000 -0400
@@ -37,12 +37,12 @@
/**
Default file name for the current configuration.
*/
-static char CURRENT_CONFIG_FILE [] = "/var/opt/tog-pegasus/cimserver_current.conf";
+static char CURRENT_CONFIG_FILE [] = "/etc/Pegasus/cimserver_current.conf";
/**
Default file name for the planned configuration.
*/
-static char PLANNED_CONFIG_FILE [] = "/var/opt/tog-pegasus/cimserver_planned.conf";
+static char PLANNED_CONFIG_FILE [] = "/etc/Pegasus/cimserver_planned.conf";
/**
Default file name for the cimserver startup file containing the PID.
--- pegasus-2.5/src/Pegasus/ControlProviders/CertificateProvider/Makefile.redhat 2005-05-12 11:29:46.000000000 -0400
+++ pegasus-2.5/src/Pegasus/ControlProviders/CertificateProvider/Makefile 2005-10-03 17:12:17.000000000 -0400
@@ -56,8 +56,8 @@
ifeq ($(OS),linux)
EXTRA_LIBRARIES += -lcrypt
ifdef PEGASUS_HAS_SSL
- EXTRA_LIBRARIES += -L$(OPENSSL_HOME)/lib -lssl -lcrypto
- EXTRA_LINK_ARGUMENTS = -Xlinker -rpath -Xlinker $(OPENSSL_HOME)/lib
+ EXTRA_LIBRARIES += -L$(OPENSSL_HOME)/$(PEGASUS_ARCH_LIB_DIR) -lssl -lcrypto
+ EXTRA_LINK_ARGUMENTS = -Xlinker -rpath -Xlinker $(OPENSSL_HOME)/$(PEGASUS_ARCH_LIB_DIR)
endif
endif
--- pegasus-2.5/src/Pegasus/Common/tests/DynLoad/Makefile.redhat 2005-05-12 11:28:46.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Common/tests/DynLoad/Makefile 2005-10-03 17:12:17.000000000 -0400
@@ -45,7 +45,7 @@
ifeq ($(PEGASUS_OS_TYPE),VMS)
$(PROGRAM) libTestDynLib
else
- $(PROGRAM) $(HOME_DIR)/lib/libTestDynLib$(LIB_SUFFIX)
+ $(PROGRAM) $(HOME_DIR)/$(PEGASUS_ARCH_LIB_DIR)/libTestDynLib$(LIB_SUFFIX)
endif
endif
--- pegasus-2.5/src/Pegasus/Common/MessageQueueService.cpp.redhat 2005-08-16 18:46:53.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Common/MessageQueueService.cpp 2005-10-03 17:12:17.000000000 -0400
@@ -68,7 +68,9 @@
#define MAX_THREADS_PER_SVC_QUEUE_LIMIT 5000
#define MAX_THREADS_PER_SVC_QUEUE_DEFAULT 5
-
+#ifndef MAX_THREADS_PER_SVC_QUEUE
+#define MAX_THREADS_PER_SVC_QUEUE MAX_THREADS_PER_SVC_QUEUE_DEFAULT
+#endif
Uint32 max_threads_per_svc_queue;
PEGASUS_THREAD_RETURN PEGASUS_THREAD_CDECL
--- pegasus-2.5/src/Pegasus/Common/Makefile.redhat 2005-06-12 18:31:19.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Common/Makefile 2005-10-03 17:12:17.000000000 -0400
@@ -165,8 +165,8 @@
ifeq ($(OS),linux)
EXTRA_LIBRARIES += -lcrypt
ifdef PEGASUS_HAS_SSL
- EXTRA_LIBRARIES += -L$(OPENSSL_HOME)/lib -lssl -lcrypto
- EXTRA_LINK_ARGUMENTS = -Xlinker -rpath -Xlinker $(OPENSSL_HOME)/lib
+ EXTRA_LIBRARIES += -L$(OPENSSL_HOME)/$(PEGASUS_ARCH_LIB_DIR) -lssl -lcrypto
+ EXTRA_LINK_ARGUMENTS = -Xlinker -rpath -Xlinker $(OPENSSL_HOME)/$(PEGASUS_ARCH_LIB_DIR)
endif
endif
@@ -206,11 +206,11 @@
ifeq ($(PEGASUS_PLATFORM),WIN32_IX86_MSVC)
SYS_LIBS = ws2_32.lib advapi32.lib netapi32.lib
ifdef PEGASUS_HAS_SSL
- SYS_LIBS += /libpath:$(OPENSSL_HOME)/lib libeay32.lib ssleay32.lib
+ SYS_LIBS += /libpath:$(OPENSSL_HOME)/$(PEGASUS_ARCH_LIB_DIR) libeay32.lib ssleay32.lib
endif
ifdef PEGASUS_WINDOWS_SDK_HOME
FLAGS += -DPEGASUS_WINDOWS_SDK_HOME
- SYS_LIBS += /libpath:$(PEGASUS_WINDOWS_SDK_HOME)/lib secur32.lib
+ SYS_LIBS += /libpath:$(PEGASUS_WINDOWS_SDK_HOME)/$(PEGASUS_ARCH_LIB_DIR) secur32.lib
else
ifneq ($(CL_MAJOR_VERSION), 12)
SYS_LIBS += secur32.lib
--- pegasus-2.5/src/Pegasus/Common/Constants.h.redhat 2005-07-27 17:02:36.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Common/Constants.h 2005-10-03 17:12:17.000000000 -0400
@@ -380,21 +380,21 @@
# define PEGASUS_PAM_STANDALONE_PROC_NAME "/opt/freeware/cimom/pegasus/bin/cimservera"
# elif defined(PEGASUS_OS_LINUX) && !defined(PEGASUS_OS_LSB)
# undef PEGASUS_SSLCLIENT_CERTIFICATEFILE
-# define PEGASUS_SSLCLIENT_CERTIFICATEFILE "/etc/opt/tog-pegasus/client.pem"
+# define PEGASUS_SSLCLIENT_CERTIFICATEFILE "/etc/Pegasus/client.pem"
# undef PEGASUS_SSLCLIENT_RANDOMFILE
-# define PEGASUS_SSLCLIENT_RANDOMFILE "/var/opt/tog-pegasus/ssl.rnd"
+# define PEGASUS_SSLCLIENT_RANDOMFILE "/var/lib/Pegasus/ssl.rnd"
# undef PEGASUS_SSLSERVER_RANDOMFILE
-# define PEGASUS_SSLSERVER_RANDOMFILE "/var/opt/tog-pegasus/cimserver.rnd"
+# define PEGASUS_SSLSERVER_RANDOMFILE "/var/lib/Pegasus/cimserver.rnd"
# undef PEGASUS_LOCAL_AUTH_DIR
-# define PEGASUS_LOCAL_AUTH_DIR "/var/opt/tog-pegasus/cache/localauth"
+# define PEGASUS_LOCAL_AUTH_DIR "/var/lib/Pegasus/cache/localauth"
# undef PEGASUS_LOCAL_DOMAIN_SOCKET_PATH
-# define PEGASUS_LOCAL_DOMAIN_SOCKET_PATH "/var/run/tog-pegasus/socket/cimxml.socket"
+# define PEGASUS_LOCAL_DOMAIN_SOCKET_PATH "/var/run/tog-pegasus/cimxml.socket"
# undef PEGASUS_CORE_DIR
-# define PEGASUS_CORE_DIR "/var/opt/tog-pegasus/cache"
+# define PEGASUS_CORE_DIR "/var/lib/Pegasus/cache"
# undef PEGASUS_PAM_STANDALONE_PROC_NAME
-# define PEGASUS_PAM_STANDALONE_PROC_NAME "/opt/tog-pegasus/sbin/cimservera"
+# define PEGASUS_PAM_STANDALONE_PROC_NAME "/usr/sbin/cimservera"
# undef PEGASUS_PROVIDER_AGENT_PROC_NAME
-# define PEGASUS_PROVIDER_AGENT_PROC_NAME "/opt/tog-pegasus/sbin/cimprovagt"
+# define PEGASUS_PROVIDER_AGENT_PROC_NAME "/usr/sbin/cimprovagt"
# elif defined(PEGASUS_OS_LSB)
# define PEGASUS_SSLCLIENT_CERTIFICATEFILE "/etc/opt/lsb-pegasus/client.pem"
# undef PEGASUS_SSLCLIENT_RANDOMFILE
--- pegasus-2.5/src/Pegasus/Common/System.cpp.redhat 2005-06-06 10:27:55.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Common/System.cpp 2005-10-03 17:12:17.000000000 -0400
@@ -144,13 +144,13 @@
char *System::extract_file_path(const char *fullpath, char *dirname)
{
char *p;
- char buff[2048];
+ char buff[PEGASUS_PATH_MAX];
if (fullpath == NULL)
{
dirname[0] = '\0';
return dirname;
}
- strcpy(buff, fullpath);
+ strncpy(buff, fullpath, PEGASUS_PATH_MAX);
for(p = buff + strlen(buff); p >= buff; p--)
{
if (*p == '\\' || *p == '/')
--- pegasus-2.5/src/Pegasus/Common/Platform_LINUX_IX86_GNU.h.redhat 2005-02-26 00:22:13.000000000 -0500
+++ pegasus-2.5/src/Pegasus/Common/Platform_LINUX_IX86_GNU.h 2005-10-03 17:12:17.000000000 -0400
@@ -72,9 +72,12 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/param.h> // For MAXHOSTNAMELEN
-
+#include <limits.h> // For _POSIX_HOST_NAME_LEN
#if defined(PEGASUS_OS_LSB) && !defined(MAXHOSTNAMELEN)
-#define PEGASUS_MAXHOSTNAMELEN 64
+#if defined(_POSIX_HOST_NAME_MAX)
+#define PEGASUS_MAXHOSTNAMELEN (_POSIX_HOST_NAME_MAX+1)
+#else
+#define PEGASUS_MAXHOSTNAMELEN 256
+#endif
#endif
-
#endif /* Pegasus_Platform_LINUX_IX86_GNU_h */
--- pegasus-2.5/src/Pegasus/Common/SystemUnix.cpp.redhat 2005-07-19 15:31:26.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Common/SystemUnix.cpp 2005-10-03 17:12:17.000000000 -0400
@@ -566,7 +566,7 @@
if ((he = gethostbyname (hostName)))
{
- strcpy (hostName, he->h_name);
+ strncpy (hostName, he->h_name, PEGASUS_MAXHOSTNAMELEN);
}
#if defined(PEGASUS_OS_OS400)
--- pegasus-2.5/src/Pegasus/Common/Config.h.redhat 2005-05-05 14:18:42.000000000 -0400
+++ pegasus-2.5/src/Pegasus/Common/Config.h 2005-10-03 17:12:17.000000000 -0400
@@ -182,6 +182,13 @@
#define PEGASUS_MAXHOSTNAMELEN MAXHOSTNAMELEN
#endif
+#ifndef PEGASUS_PATH_MAX
+#ifndef PATH_MAX
+#define PEGASUS_PATH_MAX 4096
+#else
+#define PEGASUS_PATH_MAX PATH_MAX
+#endif
+#endif
#ifdef __cplusplus
PEGASUS_NAMESPACE_BEGIN
--- pegasus-2.5/src/Providers/ManagedSystem/ComputerSystem/ComputerSystem_Linux.cpp.redhat 2005-03-02 13:17:32.000000000 -0500
+++ pegasus-2.5/src/Providers/ManagedSystem/ComputerSystem/ComputerSystem_Linux.cpp 2005-10-03 17:12:17.000000000 -0400
@@ -310,7 +310,7 @@
he=gethostbyname(hostName);
if (he)
{
- strcpy(hostName, he->h_name);
+ strncpy(hostName, he->h_name, PEGASUS_MAXHOSTNAMELEN);
}
_hostName.assign(hostName);
--- pegasus-2.5/src/Providers/ManagedSystem/OperatingSystem/OperatingSystem_Linux.cpp.redhat 2005-02-05 18:01:03.000000000 -0500
+++ pegasus-2.5/src/Providers/ManagedSystem/OperatingSystem/OperatingSystem_Linux.cpp 2005-10-03 17:12:17.000000000 -0400
@@ -172,7 +172,7 @@
he=gethostbyname(hostName);
if (he)
{
- strcpy(hostName, he->h_name);
+ strncpy(hostName, he->h_name, PEGASUS_MAXHOSTNAMELEN);
}
csName.assign(hostName);
--- pegasus-2.5/src/Providers/ManagedSystem/Process/Process_Linux.cpp.redhat 2005-07-15 16:46:54.000000000 -0400
+++ pegasus-2.5/src/Providers/ManagedSystem/Process/Process_Linux.cpp 2005-10-03 17:12:17.000000000 -0400
@@ -782,7 +782,7 @@
he=gethostbyname(hostName);
if (he)
{
- strcpy(hostName, he->h_name);
+ strncpy(hostName, he->h_name, PEGASUS_MAXHOSTNAMELEN);
}
csName.assign(hostName);
--- pegasus-2.5/src/Clients/repupgrade/RepositoryUpgrade.cpp.redhat 2005-06-03 16:04:34.000000000 -0400
+++ pegasus-2.5/src/Clients/repupgrade/RepositoryUpgrade.cpp 2005-10-03 17:12:17.000000000 -0400
@@ -2075,7 +2075,7 @@
fileName = _pegasusHome + "/bin/" +
FileSystem::buildLibraryFileName(moduleName);
#else
- fileName = _pegasusHome + "/lib/" +
+ fileName = _pegasusHome + PEGASUS_DEST_LIB_DIR +
FileSystem::buildLibraryFileName(moduleName);
#endif

View File

@ -1,11 +0,0 @@
--- pegasus-2.5/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp.syslog_h 2006-02-07 17:31:36.000000000 -0500
+++ pegasus-2.5/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp 2006-02-07 17:34:57.000000000 -0500
@@ -46,6 +46,8 @@
#include <prot.h>
#endif
+#include <syslog.h>
+
#if defined (PEGASUS_USE_PAM_STANDALONE_PROC)
#include <Pegasus/Common/Logger.h>
#include <Pegasus/Common/IPC.h>

View File

@ -1,12 +0,0 @@
--- pegasus/src/Pegasus/Common/AutoPtr.h.AutoPtr-Core 2006-01-30 11:16:46.000000000 -0500
+++ pegasus/src/Pegasus/Common/AutoPtr.h 2006-04-11 15:01:43.000000000 -0400
@@ -200,7 +200,8 @@
{
if (p != _ptr)
{
- delete _ptr;
+ if ( _ptr != 0 )
+ delete _ptr;
_ptr = p;
}
}

View File

@ -1,136 +0,0 @@
--- pegasus/src/Pegasus/Common/Platform_LINUX_XSCALE_GNU.h.HOSTNAME_MAX 2006-01-30 11:17:07.000000000 -0500
+++ pegasus/src/Pegasus/Common/Platform_LINUX_XSCALE_GNU.h 2006-04-14 18:41:28.000000000 -0400
@@ -72,9 +72,12 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/param.h> // For MAXHOSTNAMELEN
+#include <limits.h>
-#if defined(PEGASUS_OS_LSB) && !defined(MAXHOSTNAMELEN)
-#define PEGASUS_MAXHOSTNAMELEN 64
+#ifdef _POSIX_HOST_NAME_MAX
+#define PEGASUS_MAXHOSTNAMELEN (_POSIX_HOST_NAME_MAX)
+#else
+#define PEGASUS_MAXHOSTNAMELEN 255
#endif
#define PEGASUS_SOCKLEN_T socklen_t
--- pegasus/src/Pegasus/Common/Platform_LINUX_IA64_GNU.h.HOSTNAME_MAX 2006-01-30 11:17:07.000000000 -0500
+++ pegasus/src/Pegasus/Common/Platform_LINUX_IA64_GNU.h 2006-04-14 18:37:02.000000000 -0400
@@ -69,9 +69,12 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/param.h> // For MAXHOSTNAMELEN
+#include <limits.h>
-#if defined(PEGASUS_OS_LSB) && !defined(MAXHOSTNAMELEN)
-#define PEGASUS_MAXHOSTNAMELEN 64
+#ifdef _POSIX_HOST_NAME_MAX
+#define PEGASUS_MAXHOSTNAMELEN (_POSIX_HOST_NAME_MAX)
+#else
+#define PEGASUS_MAXHOSTNAMELEN 255
#endif
#define PEGASUS_SOCKLEN_T socklen_t
--- pegasus/src/Pegasus/Common/Platform_LINUX_ZSERIES_GNU.h.HOSTNAME_MAX 2006-01-30 11:17:07.000000000 -0500
+++ pegasus/src/Pegasus/Common/Platform_LINUX_ZSERIES_GNU.h 2006-04-14 18:40:02.000000000 -0400
@@ -69,9 +69,12 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/param.h> // For MAXHOSTNAMELEN
+#include <limits.h>
-#if defined(PEGASUS_OS_LSB) && !defined(MAXHOSTNAMELEN)
-#define PEGASUS_MAXHOSTNAMELEN 64
+#ifdef _POSIX_HOST_NAME_MAX
+#define PEGASUS_MAXHOSTNAMELEN (_POSIX_HOST_NAME_MAX)
+#else
+#define PEGASUS_MAXHOSTNAMELEN 255
#endif
#define PEGASUS_SOCKLEN_T socklen_t
--- pegasus/src/Pegasus/Common/Platform_LINUX_X86_64_GNU.h.HOSTNAME_MAX 2006-01-30 11:17:07.000000000 -0500
+++ pegasus/src/Pegasus/Common/Platform_LINUX_X86_64_GNU.h 2006-04-14 18:38:18.000000000 -0400
@@ -73,9 +73,12 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/param.h> // For MAXHOSTNAMELEN
+#include <limits.h>
-#if defined(PEGASUS_OS_LSB) && !defined(MAXHOSTNAMELEN)
-#define PEGASUS_MAXHOSTNAMELEN 64
+#ifdef _POSIX_HOST_NAME_MAX
+#define PEGASUS_MAXHOSTNAMELEN (_POSIX_HOST_NAME_MAX)
+#else
+#define PEGASUS_MAXHOSTNAMELEN 255
#endif
#define PEGASUS_SOCKLEN_T socklen_t
--- pegasus/src/Pegasus/Common/Platform_LINUX_PPC_GNU.h.HOSTNAME_MAX 2006-01-30 11:17:07.000000000 -0500
+++ pegasus/src/Pegasus/Common/Platform_LINUX_PPC_GNU.h 2006-04-14 18:38:50.000000000 -0400
@@ -73,9 +73,12 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/param.h> // For MAXHOSTNAMELEN
+#include <limits.h>
-#if defined(PEGASUS_OS_LSB) && !defined(MAXHOSTNAMELEN)
-#define PEGASUS_MAXHOSTNAMELEN 64
+#ifdef _POSIX_HOST_NAME_MAX
+#define PEGASUS_MAXHOSTNAMELEN (_POSIX_HOST_NAME_MAX)
+#else
+#define PEGASUS_MAXHOSTNAMELEN 255
#endif
#define PEGASUS_SOCKLEN_T socklen_t
--- pegasus/src/Pegasus/Common/Platform_LINUX_IX86_GNU.h.HOSTNAME_MAX 2006-01-30 11:17:07.000000000 -0500
+++ pegasus/src/Pegasus/Common/Platform_LINUX_IX86_GNU.h 2006-04-14 18:37:23.000000000 -0400
@@ -74,9 +74,12 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/param.h> // For MAXHOSTNAMELEN
+#include <limits.h>
-#if defined(PEGASUS_OS_LSB) && !defined(MAXHOSTNAMELEN)
-#define PEGASUS_MAXHOSTNAMELEN 64
+#ifdef _POSIX_HOST_NAME_MAX
+#define PEGASUS_MAXHOSTNAMELEN (_POSIX_HOST_NAME_MAX)
+#else
+#define PEGASUS_MAXHOSTNAMELEN 255
#endif
#define PEGASUS_SOCKLEN_T socklen_t
--- pegasus/src/Pegasus/Common/Platform_LINUX_ZSERIES64_GNU.h.HOSTNAME_MAX 2006-01-30 11:17:07.000000000 -0500
+++ pegasus/src/Pegasus/Common/Platform_LINUX_ZSERIES64_GNU.h 2006-04-14 18:40:30.000000000 -0400
@@ -70,8 +70,12 @@
#include <stdlib.h>
#include <sys/param.h> // For MAXHOSTNAMELEN
-#if defined(PEGASUS_OS_LSB) && !defined(MAXHOSTNAMELEN)
-#define PEGASUS_MAXHOSTNAMELEN 64
+#include <limits.h>
+
+#ifdef _POSIX_HOST_NAME_MAX
+#define PEGASUS_MAXHOSTNAMELEN (_POSIX_HOST_NAME_MAX)
+#else
+#define PEGASUS_MAXHOSTNAMELEN 255
#endif
#define PEGASUS_SOCKLEN_T socklen_t
--- pegasus/src/Pegasus/Common/Platform_LINUX_PPC64_GNU.h.HOSTNAME_MAX 2006-01-30 11:17:07.000000000 -0500
+++ pegasus/src/Pegasus/Common/Platform_LINUX_PPC64_GNU.h 2006-04-14 18:39:13.000000000 -0400
@@ -73,9 +73,12 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/param.h> // For MAXHOSTNAMELEN
+#include <limits.h>
-#if defined(PEGASUS_OS_LSB) && !defined(MAXHOSTNAMELEN)
-#define PEGASUS_MAXHOSTNAMELEN 64
+#ifdef _POSIX_HOST_NAME_MAX
+#define PEGASUS_MAXHOSTNAMELEN (_POSIX_HOST_NAME_MAX)
+#else
+#define PEGASUS_MAXHOSTNAMELEN 255
#endif
#define PEGASUS_SOCKLEN_T socklen_t

View File

@ -1,18 +0,0 @@
--- pegasus/src/Pegasus/Common/System.cpp.PATH_MAX 2006-01-30 11:17:08.000000000 -0500
+++ pegasus/src/Pegasus/Common/System.cpp 2006-04-14 18:19:27.000000000 -0400
@@ -185,13 +185,13 @@
char *System::extract_file_path(const char *fullpath, char *dirname)
{
char *p;
- char buff[2048];
+ char buff[PATH_MAX];
if (fullpath == NULL)
{
dirname[0] = '\0';
return dirname;
}
- strcpy(buff, fullpath);
+ strncpy(buff, fullpath, PATH_MAX);
for(p = buff + strlen(buff); p >= buff; p--)
{
if (*p == '\\' || *p == '/')

View File

@ -1,134 +0,0 @@
--- pegasus/src/Pegasus/Compiler/cmdline/cimmof/Makefile.PIE 2006-01-30 11:17:34.000000000 -0500
+++ pegasus/src/Pegasus/Compiler/cmdline/cimmof/Makefile 2006-04-06 16:17:54.000000000 -0400
@@ -32,6 +32,8 @@
DIR = Pegasus/Compiler/cmdline/cimmof
include $(ROOT)/mak/config.mak
+FLAGS := $(FLAGS:-fPIC=-fPIE)
+
LOCAL_DEFINES = -DPEGASUS_CMDLINE_INTERNAL -DPEGASUS_INTERNALONLY
LIBRARIES = \
--- pegasus/src/Pegasus/Compiler/cmdline/cimmofl/Makefile.PIE 2006-01-30 11:17:34.000000000 -0500
+++ pegasus/src/Pegasus/Compiler/cmdline/cimmofl/Makefile 2006-04-06 16:17:43.000000000 -0400
@@ -32,6 +32,8 @@
DIR = Pegasus/Compiler/cmdline/cimmofl
include $(ROOT)/mak/config.mak
+FLAGS := $(FLAGS:-fPIC=-fPIE)
+
LOCAL_DEFINES = -DPEGASUS_INTERNALONLY
PROGRAM = cimmofl
--- pegasus/src/Pegasus/ProviderManager2/ProviderAgent/Makefile.PIE 2006-01-30 11:18:16.000000000 -0500
+++ pegasus/src/Pegasus/ProviderManager2/ProviderAgent/Makefile 2006-04-05 21:05:58.000000000 -0400
@@ -29,11 +29,12 @@
#//
#//==============================================================================
ROOT = ../../../..
-
DIR = Pegasus/ProviderManager2/ProviderAgent
include $(ROOT)/mak/config.mak
+FLAGS := $(FLAGS:-fPIC=-fPIE)
+
LIBRARIES = \
pegprovidermanager \
pegprovider \
@@ -56,4 +57,3 @@
tests:
poststarttests:
-
--- pegasus/src/Server/Makefile.PIE 2006-01-30 11:19:33.000000000 -0500
+++ pegasus/src/Server/Makefile 2006-04-05 21:05:58.000000000 -0400
@@ -30,8 +30,11 @@
#//==============================================================================
ROOT = ../..
DIR = Server
+
include $(ROOT)/mak/config.mak
+FLAGS := $(FLAGS:-fPIC=-fPIE)
+
LIBRARIES = \
pegclient \
pegserver \
--- pegasus/src/Clients/cimprovider/Makefile.PIE 2006-01-30 11:16:33.000000000 -0500
+++ pegasus/src/Clients/cimprovider/Makefile 2006-04-06 16:17:31.000000000 -0400
@@ -36,6 +36,8 @@
include $(ROOT)/mak/config.mak
+FLAGS := $(FLAGS:-fPIC=-fPIE)
+
LIBRARIES = \
pegcliutils \
pegclient \
--- pegasus/src/Clients/osinfo/Makefile.PIE 2006-01-30 11:16:35.000000000 -0500
+++ pegasus/src/Clients/osinfo/Makefile 2006-04-06 16:17:14.000000000 -0400
@@ -35,6 +35,8 @@
DIR = Clients/osinfo
include $(ROOT)/mak/config.mak
+FLAGS := $(FLAGS:-fPIC=-fPIE)
+
LIBRARIES = \
pegcliutils \
peggetoopt \
--- pegasus/src/Clients/cimuser/Makefile.PIE 2006-01-30 11:16:33.000000000 -0500
+++ pegasus/src/Clients/cimuser/Makefile 2006-04-06 16:17:01.000000000 -0400
@@ -36,6 +36,8 @@
include $(ROOT)/mak/config.mak
+FLAGS := $(FLAGS:-fPIC=-fPIE)
+
LIBRARIES = \
pegcliutils \
pegclient \
--- pegasus/src/Clients/repupgrade/Makefile.PIE 2006-01-30 11:16:36.000000000 -0500
+++ pegasus/src/Clients/repupgrade/Makefile 2006-04-06 16:16:37.000000000 -0400
@@ -36,6 +36,8 @@
include $(ROOT)/mak/config.mak
+FLAGS := $(FLAGS:-fPIC=-fPIE)
+
LOCAL_DEFINES = -DPEGASUS_INTERNALONLY
LIBRARIES = \
--- pegasus/src/Clients/cimauth/Makefile.PIE 2006-01-30 11:16:32.000000000 -0500
+++ pegasus/src/Clients/cimauth/Makefile 2006-04-06 16:16:17.000000000 -0400
@@ -36,6 +36,8 @@
include $(ROOT)/mak/config.mak
+FLAGS := $(FLAGS:-fPIC=-fPIE)
+
LIBRARIES = \
pegcliutils \
pegclient \
--- pegasus/src/Clients/cimconfig/Makefile.PIE 2006-01-30 11:16:32.000000000 -0500
+++ pegasus/src/Clients/cimconfig/Makefile 2006-04-06 16:15:59.000000000 -0400
@@ -36,6 +36,8 @@
include $(ROOT)/mak/config.mak
+FLAGS := $(FLAGS:-fPIC=-fPIE)
+
LIBRARIES = \
pegcliutils \
pegclient \
--- pegasus/src/Clients/wbemexec/Makefile.PIE 2006-01-30 11:16:37.000000000 -0500
+++ pegasus/src/Clients/wbemexec/Makefile 2006-04-06 16:15:23.000000000 -0400
@@ -36,6 +36,8 @@
include $(ROOT)/mak/config.mak
+FLAGS := $(FLAGS:-fPIC=-fPIE)
+
ifdef PEGASUS_HAS_SSL
FLAGS += -DPEGASUS_HAS_SSL -DPEGASUS_SSL_RANDOMFILE
SYS_INCLUDES += -I$(OPENSSL_HOME)/include

View File

@ -1,11 +0,0 @@
--- pegasus/src/Pegasus/Common/Makefile.bz198185 2006-07-19 16:21:06.000000000 -0400
+++ pegasus/src/Pegasus/Common/Makefile 2006-07-19 19:19:42.000000000 -0400
@@ -183,7 +183,7 @@
SOURCES = $(SOURCES1) $(SOURCES2)
ifeq ($(OS),linux)
- EXTRA_LIBRARIES += -lcrypt
+ EXTRA_LIBRARIES += -lcrypt -lpthread
ifdef PEGASUS_HAS_SSL
EXTRA_LIBRARIES += -lssl -lcrypto
endif

View File

@ -1,24 +0,0 @@
--- pegasus/src/Pegasus/Config/FixedPropertyTableLinux.h.cmpi_provider_lib 2006-03-14 16:06:37.000000000 -0500
+++ pegasus/src/Pegasus/Config/FixedPropertyTableLinux.h 2006-04-05 20:06:55.000000000 -0400
@@ -65,8 +65,8 @@
{"crlStore", PEGASUS_SSL_SERVER_CRL},
#endif
{"repositoryDir", PEGASUS_REPOSITORY_DIR},
- {"providerDir", PEGASUS_PROVIDER_LIB_DIR":/usr/lib/cmpi"},
-#else
+ {"providerDir", PEGASUS_PROVIDER_LIB_DIR ":" PEGASUS_DEST_LIB_DIR "/cmpi"},
+#else /* PEGASUS_OVERRIDE_DEFAULT_RELEASE_DIRS */
{"traceFilePath", "/var/opt/tog-pegasus/cache/trace/cimserver.trc"},
#if !defined(PEGASUS_USE_SYSLOGS)
{"logdir", "/var/opt/tog-pegasus/log"},
@@ -84,8 +84,8 @@
{"providerDir", "/opt/tog-pegasus/providers/lib"},
#endif
{"messageDir", "/opt/tog-pegasus/share/locale/ICU_Messages"},
-#endif
-#endif
+#endif /* PEGASUS_OVERRIDE_DEFAULT_RELEASE_DIRS */
+#endif /* defined(PEGASUS_USE_RELEASE_DIRS) && !defined(PEGASUS_OS_LSB) */
#if defined(PEGASUS_USE_RELEASE_DIRS) && defined(PEGASUS_OS_LSB)
{"traceFilePath", "/var/opt/lsb-pegasus/cache/cimserver.trc"},
#if !defined(PEGASUS_USE_SYSLOGS)

View File

@ -1,40 +0,0 @@
--- pegasus/env_var_Linux.status.enable-cql 2006-03-15 20:33:51.000000000 -0500
+++ pegasus/env_var_Linux.status 2006-04-06 15:19:35.000000000 -0400
@@ -18,7 +18,7 @@
PEGASUS_STAGING_DIR = $(PEGASUS_HOME)/stagingDir
endif
-PEGASUS_DISABLE_CQL=true
+PEGASUS_ENABLE_CQL=true
PEGASUS_DISABLE_OBJECT_NORMALIZATION=true
PEGASUS_DISABLE_PERFINST=yes
PEGASUS_ENABLE_CMPI_PROVIDER_MANAGER=true
@@ -26,7 +26,6 @@
PEGASUS_HAS_SSL=yes
PEGASUS_NOASSERTS=yes
PEGASUS_PAM_AUTHENTICATION=true
-PEGASUS_USE_PAM_STANDALONE_PROC=true
PEGASUS_USE_RELEASE_CONFIG_OPTIONS=true
PEGASUS_USE_RELEASE_DIRS=true
PEGASUS_USE_SYSLOGS=true
@@ -64,9 +63,10 @@
PEGASUS_LOCAL_AUTH_DIR = $(PEGASUS_VARDATA_CACHE_DIR)/localauth
PEGASUS_TRACE_DIR = $(PEGASUS_VARDATA_CACHE_DIR)/trace
PEGASUS_TRACE_FILE_PATH = $(PEGASUS_VARDATA_CACHE_DIR)/trace/cimserver.trc
+PEGASUS_CONFIG_DIR = /etc/Pegasus
PEGASUS_PLANNED_CONFIG_FILE = cimserver_planned.conf
PEGASUS_PLANNED_CONFIG_FILE_PATH = \
- $(PEGASUS_VARDATA_DIR)/$(PEGASUS_PLANNED_CONFIG_FILE)
+ $(PEGASUS_CONFIG_DIR)/$(PEGASUS_PLANNED_CONFIG_FILE)
PEGASUS_CURRENT_CONFIG_FILE = cimserver_current.conf
PEGASUS_CURRENT_CONFIG_FILE_PATH = \
$(PEGASUS_VARDATA_DIR)/$(PEGASUS_CURRENT_CONFIG_FILE)
@@ -74,8 +74,6 @@
PEGASUS_LOG_DIR = $(PEGASUS_VARDATA_DIR)/log
PEGASUS_INSTALL_LOG = $(PEGASUS_LOG_DIR)/install.log
-PEGASUS_CONFIG_DIR = /etc/Pegasus
-
PEGASUS_VARRUN_DIR = /var/run/tog-pegasus
PEGASUS_CIMSERVER_START_FILE = $(PEGASUS_VARRUN_DIR)/cimserver.pid
CIMSERVER_LOCK_FILE = $(PEGASUS_VARRUN_DIR)/cimserver_start.lock

View File

@ -1,15 +0,0 @@
--- pegasus/src/Clients/repupgrade/RepositoryUpgrade.cpp.fix_repupgrade 2006-01-31 14:34:30.000000000 -0500
+++ pegasus/src/Clients/repupgrade/RepositoryUpgrade.cpp 2006-04-17 16:09:24.000000000 -0400
@@ -295,9 +295,9 @@
const String NEW_REPOSITORY_PATH = "/wbem_var/opt/wbem/repository";
const String RepositoryUpgrade::_LOG_PATH = "/wbem_var/opt/wbem/upgrade";
#elif defined(PEGASUS_USE_RELEASE_DIRS) && defined(PEGASUS_OS_LINUX)
- const String OLD_REPOSITORY_PATH = "/var/opt/tog-pegasus/prev_repository";
- const String NEW_REPOSITORY_PATH = "/var/opt/tog-pegasus/repository";
- const String RepositoryUpgrade::_LOG_PATH = "/var/opt/tog-pegasus/log/upgrade";
+ const String OLD_REPOSITORY_PATH = "/var/lib/Pegasus/prev_repository";
+ const String NEW_REPOSITORY_PATH = "/var/lib/Pegasus/repository";
+ const String RepositoryUpgrade::_LOG_PATH = "/var/lib/Pegasus/log/install.log";
#define REPUPGRADE_USE_RELEASE_DIRS true
#else
const String RepositoryUpgrade::_LOG_PATH

View File

@ -1,16 +0,0 @@
--- pegasus/mak/platform_LINUX_ZSERIES64_GNU.mak.fix_zseries_flags 2006-01-30 11:16:23.000000000 -0500
+++ pegasus/mak/platform_LINUX_ZSERIES64_GNU.mak 2006-04-10 20:10:04.000000000 -0400
@@ -35,4 +35,4 @@
ARCHITECTURE = zseries
-FLAGS = -fsigned-char
+FLAGS += -fsigned-char
--- pegasus/mak/platform_LINUX_ZSERIES_GNU.mak.fix_zseries_flags 2006-01-30 11:16:23.000000000 -0500
+++ pegasus/mak/platform_LINUX_ZSERIES_GNU.mak 2006-04-10 20:09:41.000000000 -0400
@@ -35,4 +35,4 @@
ARCHITECTURE = zseries
-FLAGS = -fsigned-char
+FLAGS += -fsigned-char

View File

@ -1,26 +0,0 @@
--- pegasus/mak/library.mak.linkflags 2006-01-30 11:16:23.000000000 -0500
+++ pegasus/mak/library.mak 2006-04-05 17:11:23.000000000 -0400
@@ -40,6 +40,10 @@
include $(ROOT)/mak/common.mak
+ifdef PEGASUS_EXTRA_LIBRARY_LINK_FLAGS
+ EXTRA_LINK_FLAGS = $(PEGASUS_EXTRA_LIBRARY_LINK_FLAGS)
+endif
+
################################################################################
##
## Build list of object names.
--- pegasus/mak/program.mak.linkflags 2006-01-30 11:16:23.000000000 -0500
+++ pegasus/mak/program.mak 2006-04-05 17:10:37.000000000 -0400
@@ -38,6 +38,10 @@
include $(ROOT)/mak/common.mak
+ifdef PEGASUS_EXTRA_PROGRAM_LINK_FLAGS
+ EXTRA_LINK_FLAGS = $(PEGASUS_EXTRA_PROGRAM_LINK_FLAGS)
+endif
+
ifeq ($(OS_TYPE),windows)
include $(ROOT)/mak/program-windows.mak
endif

View File

@ -1,439 +0,0 @@
--- pegasus/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp.local-or-remote-auth 2006-03-10 18:18:37.000000000 -0500
+++ pegasus/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp 2006-04-05 20:35:40.000000000 -0400
@@ -384,6 +384,9 @@
}
}
+ // Let Authenticators know whether this user is Local or Remote:
+ httpMessage->authInfo->setRemoteUser( httpMessage->fromRemoteHost );
+
//
// Handle authentication:
//
--- pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp.local-or-remote-auth 2006-01-30 11:18:28.000000000 -0500
+++ pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp 2006-04-05 20:40:40.000000000 -0400
@@ -48,6 +48,8 @@
#include <prot.h>
#endif
+#include <syslog.h>
+
#if defined (PEGASUS_USE_PAM_STANDALONE_PROC)
#include <Pegasus/Common/Logger.h>
#include <Pegasus/Common/IPC.h>
@@ -131,7 +133,8 @@
Boolean PAMBasicAuthenticator::authenticate(
const String& userName,
- const String& password)
+ const String& password,
+ Boolean isRemoteUser)
{
PEG_METHOD_ENTER(TRC_AUTHENTICATION,
"PAMBasicAuthenticator::authenticate()");
@@ -139,7 +142,7 @@
Boolean authenticated;
#if !defined(PEGASUS_USE_PAM_STANDALONE_PROC)
- authenticated = _authenticateByPAM(userName, password);
+ authenticated = _authenticateByPAM(userName, password, isRemoteUser);
#else
//
// Mutex to Serialize Authentication calls.
@@ -147,8 +150,9 @@
Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
"Authentication Mutex lock.");
AutoMutex lock(_authSerializeMutex);
- authenticated = _pamBasicAuthenticatorStandAlone.authenticate(
- userName, password);
+ authenticated =
+ _pamBasicAuthenticatorStandAlone->authenticate(userName,
+ password);
#endif
PEG_METHOD_EXIT();
@@ -157,7 +161,8 @@
Boolean PAMBasicAuthenticator::_authenticateByPAM(
const String& userName,
- const String& password)
+ const String& password,
+ Boolean isRemoteUser)
{
PEG_METHOD_ENTER(TRC_AUTHENTICATION,
"PAMBasicAuthenticator::_authenticateByPAM()");
@@ -167,6 +172,7 @@
pam_handle_t *phandle;
char *name;
APP_DATA mydata;
+ int retcode;
//
// Store the password for PAM authentication
@@ -180,13 +186,31 @@
// Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
// "PAMBasicAuthenticator::_authenticateByPAM() - userName = %s; userPassword = %s",
// (const char *)userName.getCString(), (const char *)password.getCString());
+
+ // NOTE: if any pam call should log anything, our syslog socket will be redirected
+ // to the AUTH facility, so we need to redirect it back after each pam call.
//
//Call pam_start since you need to before making any other PAM calls
//
- if ( ( pam_start(service,
+
+ if ( (retcode = pam_start(service,
(const char *)userName.getCString(), &pconv, &phandle) ) != PAM_SUCCESS )
{
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_start failed: %s", pam_strerror(phandle, retcode));
+ PEG_METHOD_EXIT();
+ return (authenticated);
+ }
+
+
+ if ( (retcode = pam_set_item(phandle, PAM_TTY, isRemoteUser ? "wbemNetwork" : "wbemLocal")) != PAM_SUCCESS )
+ {
+ pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_set_item(PAM_TTY=wbem) failed: %s", pam_strerror(phandle, retcode));
PEG_METHOD_EXIT();
return (authenticated);
}
@@ -194,7 +218,7 @@
//
//Call pam_authenticate to authenticate the user
//
- if ( ( pam_authenticate(phandle, 0) ) == PAM_SUCCESS )
+ if ( ( retcode = pam_authenticate(phandle, 0) ) == PAM_SUCCESS )
{
Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
"pam_authenticate successful.");
@@ -203,22 +227,40 @@
//checking for password and account expiration, as well as verifying access
//hour restrictions.
//
- if ( ( pam_acct_mgmt(phandle, 0) ) == PAM_SUCCESS )
+
+ if ( ( retcode = pam_acct_mgmt(phandle, 0) ) == PAM_SUCCESS )
{
Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
"pam_acct_mgmt successful.");
authenticated = true;
- }
+ }else
+ {
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog(LOG_ERR, "pam_acct_mgmt failed: %s",pam_strerror(phandle, retcode));
+ }
+ }else
+ {
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog(LOG_ERR, "pam_authenticate failed: %s",pam_strerror(phandle, retcode));
}
-
//
//Call pam_end to end our PAM work
//
pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
- PEG_METHOD_EXIT();
+ if ( ! authenticated )
+ syslog(LOG_ERR, "PAM authentication failed for %s user: %s",
+ isRemoteUser ? "remote" : "local",
+ (const char*)userName.getCString()
+ );
+ PEG_METHOD_EXIT();
return (authenticated);
+
}
Boolean PAMBasicAuthenticator::validateUser(const String& userName)
@@ -233,6 +275,7 @@
pam_handle_t *phandle;
char *name;
APP_DATA mydata;
+ int retcode;
const char *service = "wbem";
pconv.conv = PAMBasicAuthenticator::pamValidateUserCallback;
@@ -241,21 +284,43 @@
//
// Call pam_start since you need to before making any other PAM calls
//
- if ( pam_start(service,
- (const char *)userName.getCString(), &pconv, &phandle) != PAM_SUCCESS)
- {
+ if ( (retcode =
+ pam_start(service,(const char *)userName.getCString(), &pconv, &phandle)
+ ) != PAM_SUCCESS
+ )
+ {
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_start() failed: %s", pam_strerror(phandle, retcode));
PEG_METHOD_EXIT();
return (authenticated);
}
+ if ( (retcode = pam_set_item(phandle, PAM_TTY, "wbemLocal")) != PAM_SUCCESS )
+ {
+ pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_set_item(PAM_TTY=wbemLocal) failed: %s", pam_strerror(phandle, retcode));
+ PEG_METHOD_EXIT();
+ return (authenticated);
+ }
//
// Call pam_acct_mgmt, to check if the user account is valid. This includes
// checking for account expiration, as well as verifying access
// hour restrictions.
//
- if ( pam_acct_mgmt(phandle, 0) == PAM_SUCCESS )
- {
+ if ( (retcode = pam_acct_mgmt(phandle, 0)) == PAM_SUCCESS )
+ {
authenticated = true;
+ }else
+ {
+ pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_acct_mgmt() failed: %s", pam_strerror(phandle, retcode));
+ PEG_METHOD_EXIT();
+ return (authenticated);
}
//
@@ -263,6 +328,9 @@
//
pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+
#else
//
// Mutex to Serialize Authentication calls.
--- pegasus/src/Pegasus/Security/Authentication/BasicAuthenticator.h.local-or-remote-auth 2006-01-30 11:18:28.000000000 -0500
+++ pegasus/src/Pegasus/Security/Authentication/BasicAuthenticator.h 2006-04-05 20:35:40.000000000 -0400
@@ -67,7 +67,8 @@
*/
virtual Boolean authenticate(
const String& userName,
- const String& password) = 0;
+ const String& password,
+ Boolean isRemoteUser) = 0;
/** Construct and return the HTTP Basic authentication challenge header
@return A string containing the authentication challenge header.
--- pegasus/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp.local-or-remote-auth 2006-01-30 11:18:28.000000000 -0500
+++ pegasus/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp 2006-04-05 20:35:40.000000000 -0400
@@ -138,7 +138,7 @@
authInfo->setAuthenticatedUser(userName);
authInfo->setAuthenticatedPassword(password);
#else
- authenticated = _basicAuthenticator->authenticate(userName, password);
+ authenticated = _basicAuthenticator->authenticate(userName, password, authInfo->isRemoteUser());
if (authenticated)
{
--- pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp.local-or-remote-auth 2006-01-30 11:18:28.000000000 -0500
+++ pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp 2006-04-05 20:35:40.000000000 -0400
@@ -92,7 +92,8 @@
Boolean PAMBasicAuthenticator::authenticate(
const String& userName,
- const String& password)
+ const String& password,
+ Boolean isRemoteUser)
{
PEG_METHOD_ENTER(TRC_AUTHENTICATION,
"PAMBasicAuthenticator::authenticate()");
--- pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h.local-or-remote-auth 2006-01-30 11:18:28.000000000 -0500
+++ pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h 2006-04-05 20:35:40.000000000 -0400
@@ -73,7 +73,8 @@
*/
Boolean authenticate(
const String& userName,
- const String& password);
+ const String& password,
+ Boolean isRemoteUser);
/** Verify PAM account management for the requesting user.
@param userName String containing the user name
@@ -102,7 +103,8 @@
Boolean _authenticateByPAM(
const String& userName,
- const String& password);
+ const String& password,
+ Boolean isRemoteUser);
void _createPAMStandalone();
@@ -158,7 +160,8 @@
*/
Boolean authenticate(
const String& userName,
- const String& password);
+ const String& password,
+ Boolean isRemoteUser);
/** Verify whether the user is valid.
@param userName String containing the user name
@@ -220,7 +223,8 @@
Boolean _authenticateByPAM(
const String& userName,
- const String& password);
+ const String& password,
+ Boolean isRemoteUser);
#if defined(PEGASUS_USE_PAM_STANDALONE_PROC)
PAMBasicAuthenticatorStandAlone _pamBasicAuthenticatorStandAlone;
--- pegasus/src/Pegasus/Common/AuthenticationInfoRep.cpp.local-or-remote-auth 2006-01-30 11:16:46.000000000 -0500
+++ pegasus/src/Pegasus/Common/AuthenticationInfoRep.cpp 2006-04-05 20:35:40.000000000 -0400
@@ -57,7 +57,8 @@
_privileged(false),
_authType(String::EMPTY),
_authStatus(NEW_REQUEST),
- _exportConnection(false)
+ _exportConnection(false),
+ _remoteUser(true)
{
PEG_METHOD_ENTER(
TRC_AUTHENTICATION, "AuthenticationInfoRep::AuthenticationInfoRep");
@@ -180,5 +181,14 @@
PEG_METHOD_EXIT();
}
+void AuthenticationInfoRep::setRemoteUser(Boolean remoteUser)
+{
+ PEG_METHOD_ENTER(TRC_AUTHENTICATION,
+ "AuthenticationInfoRep::setRemoteUser");
+
+ _remoteUser = remoteUser;
+
+ PEG_METHOD_EXIT();
+}
PEGASUS_NAMESPACE_END
--- pegasus/src/Pegasus/Common/HTTPMessage.cpp.local-or-remote-auth 2006-01-30 11:17:04.000000000 -0500
+++ pegasus/src/Pegasus/Common/HTTPMessage.cpp 2006-04-05 20:35:40.000000000 -0400
@@ -119,7 +119,8 @@
queueId(queueId_),
authInfo(0),
acceptLanguagesDecoded(false),
- contentLanguagesDecoded(false)
+ contentLanguagesDecoded(false),
+ fromRemoteHost(true)
{
if (cimException_)
cimException = *cimException_;
--- pegasus/src/Pegasus/Common/AuthenticationInfo.h.local-or-remote-auth 2006-01-30 11:16:46.000000000 -0500
+++ pegasus/src/Pegasus/Common/AuthenticationInfo.h 2006-04-05 20:35:40.000000000 -0400
@@ -331,6 +331,22 @@
_rep->setClientCertificateChain(clientCertificate);
}
+ /** Indicate whether the user is Remote
+ */
+ Boolean isRemoteUser() const
+ {
+ _checkRep();
+ return _rep->isRemoteUser();
+ }
+
+ /** Set the Remote User flag
+ */
+ void setRemoteUser(Boolean remoteUser)
+ {
+ _checkRep();
+ _rep->setRemoteUser(remoteUser);
+ }
+
private:
AuthenticationInfo(AuthenticationInfoRep* rep) : _rep(rep)
--- pegasus/src/Pegasus/Common/HTTPConnection.cpp.local-or-remote-auth 2006-02-28 21:21:37.000000000 -0500
+++ pegasus/src/Pegasus/Common/HTTPConnection.cpp 2006-04-05 20:35:40.000000000 -0400
@@ -1828,6 +1828,30 @@
"_requestCount = %d", _requestCount.get());
message->dest = _outputMessageQueue->getQueueId();
// SendForget(message);
+
+ // Allow authenticators to differentiate Remote and Local users:
+ struct sockaddr_in sin_peer, sin_svr; // don't need to worry about IPv6 yet ...
+ socklen_t slen1=sizeof(struct sockaddr_in), slen2=sizeof(struct sockaddr_in);
+ uint32_t sock = _socket.get()->getSocket() ;
+ memset(&sin_peer,'\0',slen1);
+ memset(&sin_svr, '\0',slen2);
+ if ( ( ::getpeername( sock, (struct sockaddr*)&sin_peer, &slen1) == 0 )
+ ||( ::getsockname( sock, (struct sockaddr*)&sin_svr, &slen2) == 0 )
+ )
+ {
+ if( sin_peer.sin_family == AF_INET )
+ {
+ if( ((ntohl( sin_peer.sin_addr.s_addr ) >> 24) & 0xff) == 127 )
+ // message was sent FROM localhost interface
+ message->fromRemoteHost = false;
+ }
+ if( sin_svr.sin_family == AF_INET )
+ {
+ if( ((ntohl( sin_svr.sin_addr.s_addr ) >> 24) & 0xff) == 127 )
+ // message was sent TO localhost interface
+ message->fromRemoteHost = false;
+ }
+ }
//
// Set the entry status to BUSY.
--- pegasus/src/Pegasus/Common/AuthenticationInfoRep.h.local-or-remote-auth 2006-01-30 11:16:46.000000000 -0500
+++ pegasus/src/Pegasus/Common/AuthenticationInfoRep.h 2006-04-05 20:37:59.000000000 -0400
@@ -143,6 +143,14 @@
void setExportConnection(Boolean exportConnection);
+ Boolean isRemoteUser() const
+ {
+ return _remoteUser;
+ }
+
+ void setRemoteUser(Boolean remoteUser);
+
+
//PEP187
Array<SSLCertificateInfo*> getClientCertificateChain()
{
@@ -173,7 +181,8 @@
#endif
Boolean _exportConnection;
- Array<SSLCertificateInfo*> _clientCertificate;
+ Array<SSLCertificateInfo*> _clientCertificate;
+ Boolean _remoteUser;
};
PEGASUS_NAMESPACE_END
--- pegasus/src/Pegasus/Common/HTTPMessage.h.local-or-remote-auth 2006-01-30 11:17:04.000000000 -0500
+++ pegasus/src/Pegasus/Common/HTTPMessage.h 2006-04-05 20:35:40.000000000 -0400
@@ -80,7 +80,8 @@
ContentLanguageList contentLanguages;
Boolean acceptLanguagesDecoded;
Boolean contentLanguagesDecoded;
- CIMException cimException;
+ Boolean fromRemoteHost;
+ CIMException cimException;
void parse(
String& startLine,

View File

@ -1,81 +0,0 @@
--- pegasus/mak/library-unix.mak.no-rpath 2006-01-30 11:16:23.000000000 -0500
+++ pegasus/mak/library-unix.mak 2006-04-08 18:28:43.000000000 -0400
@@ -81,14 +81,14 @@
ifneq ($(PEGASUS_PLATFORM),DARWIN_PPC_GNU)
ifdef PEGASUS_USE_RELEASE_DIRS
LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
- LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath -Xlinker $(PEGASUS_DEST_LIB_DIR)
+ LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) $(EXTRA_LINK_ARGUMENTS)
else
LINK_COMMAND = $(CXX) -shared $(LINK_MACHINE_OPTIONS)
- LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -rpath -Xlinker $(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
+ LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) $(EXTRA_LINK_ARGUMENTS)
endif
else
LINK_COMMAND = $(CXX) -dynamiclib
- LINK_ARGUMENTS = --helplib$(LIBRARY)$(LIB_SUFFIX) -ldl
+ LINK_ARGUMENTS = --helplib$(LIBRARY)$(LIB_SUFFIX) -ldl $(EXTRA_LINK_ARGUMENTS)
endif
ifeq ($(PEGASUS_PLATFORM), SOLARIS_SPARC_GNU)
LINK_ARGUMENTS = -Wl,-hlib$(LIBRARY)$(LIB_SUFFIX) -Xlinker -L$(LIB_DIR) $(EXTRA_LINK_ARGUMENTS)
--- pegasus/mak/program-unix.mak.no-rpath 2006-01-30 11:16:23.000000000 -0500
+++ pegasus/mak/program-unix.mak 2006-04-08 18:28:43.000000000 -0400
@@ -30,22 +30,12 @@
#//==============================================================================
INCLUDES = -I$(ROOT)/src $(EXTRA_INCLUDES)
-ifndef LINK_RPATH
- LINK_RPATH = -Xlinker -rpath
-endif
-
LINK_DEST_LIB = -Xlinker $(PEGASUS_DEST_LIB_DIR)
LINK_LIB_DIR = -Xlinker $(LIB_DIR)
LINK_ICU = -Xlinker ${ICU_INSTALL}/lib
-ifndef LINK_RPATH_LINK
- LINK_RPATH_LINK = -Xlinker -rpath-link
-endif
-
-
-
TMP_OBJECTS = $(foreach i,$(SOURCES),$(OBJ_DIR)/$i)
ifeq ($(OS_TYPE),windows)
@@ -118,9 +108,9 @@
endif
else
ifdef PEGASUS_USE_RELEASE_DIRS
- $(LINK_WRAPPER) $(CXX) $(FLAGS) $(EXTRA_LINK_FLAGS) $(LINK_RPATH) $(LINK_DEST_LIB) $(LINK_RPATH_LINK) $(LINK_LIB_DIR) -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
+ $(LINK_WRAPPER) $(CXX) $(FLAGS) $(EXTRA_LINK_FLAGS) -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
else
- $(LINK_WRAPPER) $(CXX) $(FLAGS) $(EXTRA_LINK_FLAGS) $(LINK_RPATH) $(LINK_LIB_DIR) -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
+ $(LINK_WRAPPER) $(CXX) $(FLAGS) $(EXTRA_LINK_FLAGS) -L$(LIB_DIR) $(EXE_OUTPUT) $(OBJECTS) $(DYNAMIC_LIBRARIES) $(SYS_LIBS)
endif
endif
else
--- pegasus/src/Pegasus/ControlProviders/CertificateProvider/Makefile.no-rpath 2006-01-30 11:17:40.000000000 -0500
+++ pegasus/src/Pegasus/ControlProviders/CertificateProvider/Makefile 2006-04-09 02:19:33.000000000 -0400
@@ -58,8 +58,7 @@
ifeq ($(OS),linux)
EXTRA_LIBRARIES += -lcrypt
ifdef PEGASUS_HAS_SSL
- EXTRA_LIBRARIES += -L$(OPENSSL_HOME)/lib -lssl -lcrypto
- EXTRA_LINK_ARGUMENTS = -Xlinker -rpath -Xlinker $(OPENSSL_HOME)/lib
+ EXTRA_LIBRARIES += -lssl -lcrypto
endif
endif
--- pegasus/src/Pegasus/Common/Makefile.no-rpath 2006-01-30 11:17:05.000000000 -0500
+++ pegasus/src/Pegasus/Common/Makefile 2006-04-09 02:23:54.000000000 -0400
@@ -185,8 +185,7 @@
ifeq ($(OS),linux)
EXTRA_LIBRARIES += -lcrypt
ifdef PEGASUS_HAS_SSL
- EXTRA_LIBRARIES += -L$(OPENSSL_HOME)/lib -lssl -lcrypto
- EXTRA_LINK_ARGUMENTS = -Xlinker -rpath -Xlinker $(OPENSSL_HOME)/lib
+ EXTRA_LIBRARIES += -lssl -lcrypto
endif
endif

View File

@ -1,56 +0,0 @@
--- pegasus/src/Pegasus/ProviderManager2/ProviderManagerService.cpp.obz4934 2006-02-28 14:53:30.000000000 -0500
+++ pegasus/src/Pegasus/ProviderManager2/ProviderManagerService.cpp 2006-04-14 17:47:30.000000000 -0400
@@ -567,8 +567,8 @@
CIMRequestMessage* request,
CIMResponseMessage* response)
{
- CIMStatusCode code = CIM_ERR_SUCCESS;
- String message;
+ PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,
+ "ProviderManagerService::responseChunkCallback");
try
{
@@ -601,25 +601,20 @@
op->_async_callback(op, service, op->_callback_ptr);
}
-
- catch(CIMException &e)
- {
- code = e.getCode();
- message = e.getMessage();
- }
catch(Exception &e)
{
- code = CIM_ERR_FAILED;
- message = e.getMessage();
+ PEG_TRACE_STRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,
+ "Exception in ProviderManagerService::responseChunkCallback: " +
+ e.getMessage() + ". Chunk not delivered.");
}
catch(...)
{
- code = CIM_ERR_FAILED;
- message = cimStatusCodeToString(code);
+ PEG_TRACE_STRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,
+ "Exception in ProviderManagerService::responseChunkCallback. "
+ "Chunk not delivered.");
}
- if (code != CIM_ERR_SUCCESS)
- response->cimException = PEGASUS_CIM_EXCEPTION(code, message);
+ PEG_METHOD_EXIT();
}
Message* ProviderManagerService::_processMessage(CIMRequestMessage* request)
--- pegasus/src/Pegasus/Server/CIMOperationRequestDispatcher.cpp.obz4934 2006-03-14 17:12:21.000000000 -0500
+++ pegasus/src/Pegasus/Server/CIMOperationRequestDispatcher.cpp 2006-04-14 17:24:06.000000000 -0400
@@ -1770,6 +1770,7 @@
{
// put back the async request because there are more chunks to come.
op->put_request(asyncRequest);
+ delete asyncReply;
}
else
{

View File

@ -1,102 +0,0 @@
--- pegasus/src/Pegasus/msg/Server/pegasusServer_en.txt.obz4945 2006-03-15 16:28:36.000000000 -0500
+++ pegasus/src/Pegasus/msg/Server/pegasusServer_en.txt 2006-04-14 17:55:22.000000000 -0400
@@ -1167,8 +1167,11 @@
ControlProviders.CertificateProvider.EMPTY_CRL:string {"PGS03312: The certificate revocation list is empty."}
- ControlProviders.CertificateProvider.TRUSTSTORE_RELOAD_FAILED:string {"PGS03313: Trust store reload failed. Certificate deletion will not be effective until cimserver restart."}
+ ControlProviders.CertificateProvider.TRUSTSTORE_RELOAD_FAILED:string {"PGS03313: Trust store reload failed. Certificate deletion will not be effective until cimserver restart."}
+ ControlProviders.CertificateProvider.ERROR_WRITING_CERT:string {"PGS03314: Unable to add certificate to truststore. Error while trying to write certificate."}
+
+ ControlProviders.CertificateProvider.ERROR_WRITING_CRL:string {"PGS03315: Unable to add CRL to truststore. Error while trying to write CRL."}
// ==========================================================
// Messages for CIMOMHandle
--- pegasus/src/Pegasus/ControlProviders/CertificateProvider/CertificateProvider.cpp.obz4945 2006-03-14 16:06:37.000000000 -0500
+++ pegasus/src/Pegasus/ControlProviders/CertificateProvider/CertificateProvider.cpp 2006-04-14 17:55:21.000000000 -0400
@@ -1384,10 +1384,38 @@
sprintf(newFileName, "%s", (const char*) certificateFileName.getCString());
//use the ssl functions to write out the client x509 certificate
- //TODO: add some error checking here
BIO* outFile = BIO_new(BIO_s_file());
- BIO_write_filename(outFile, newFileName);
- int i = PEM_write_bio_X509(outFile, xCert);
+ if (outFile == NULL)
+ {
+ PEG_TRACE_STRING(TRC_CONTROLPROVIDER, Tracer::LEVEL2,
+ "Unable to add certificate to truststore. "
+ "Error while trying to write certificate, BIO_new returned error");
+ MessageLoaderParms parms("ControlProviders.CertificateProvider.ERROR_WRITING_CERT",
+ "Unable to add certificate to truststore. Error while trying to write certificate.");
+ throw CIMException(CIM_ERR_FAILED, parms);
+ }
+
+ if (!BIO_write_filename(outFile, newFileName))
+ {
+ BIO_free_all(outFile);
+ PEG_TRACE_STRING(TRC_CONTROLPROVIDER, Tracer::LEVEL2,
+ "Unable to add certificate to truststore. Error while trying to write certificate, "
+ "BIO_write_filename returned error");
+ MessageLoaderParms parms("ControlProviders.CertificateProvider.ERROR_WRITING_CERT",
+ "Unable to add certificate to truststore. Error while trying to write certificate.");
+ throw CIMException(CIM_ERR_FAILED, parms);
+ }
+ if (!PEM_write_bio_X509(outFile, xCert))
+ {
+ BIO_free_all(outFile);
+ PEG_TRACE_STRING(TRC_CONTROLPROVIDER, Tracer::LEVEL2,
+ "Unable to add certificate to truststore. "
+ "Error while trying to write certificate, PEM_write_bio_X509 returned error");
+ MessageLoaderParms parms("ControlProviders.CertificateProvider.ERROR_WRITING_CERT",
+ "Unable to add certificate to truststore. Error while trying to write certificate.");
+ throw CIMException(CIM_ERR_FAILED, parms);
+ }
+
BIO_free_all(outFile);
if (userName == String::EMPTY)
@@ -1528,10 +1556,39 @@
sprintf(newFileName, "%s", (const char*) crlFileName.getCString());
//use the ssl functions to write out the client x509 certificate
- //TODO: add some error checking here
BIO* outFile = BIO_new(BIO_s_file());
- BIO_write_filename(outFile, newFileName);
- int i = PEM_write_bio_X509_CRL(outFile, xCrl);
+ if (outFile == NULL)
+ {
+ PEG_TRACE_STRING(TRC_CONTROLPROVIDER, Tracer::LEVEL2,
+ "Unable to add CRL to truststore. "
+ "Error while trying to write CRL, BIO_new returned error");
+ MessageLoaderParms parms("ControlProviders.CertificateProvider.ERROR_WRITING_CRL",
+ "Unable to add CRL to truststore. Error while trying to write CRL.");
+ throw CIMException(CIM_ERR_FAILED, parms);
+ }
+
+ if (!BIO_write_filename(outFile, newFileName))
+ {
+ BIO_free_all(outFile);
+ PEG_TRACE_STRING(TRC_CONTROLPROVIDER, Tracer::LEVEL2,
+ "Unable to add CRL to truststore. "
+ "Error while trying to write CRL, BIO_write_filename returned error");
+ MessageLoaderParms parms("ControlProviders.CertificateProvider.ERROR_WRITING_CRL",
+ "Unable to add CRL to truststore. Error while trying to write CRL.");
+ throw CIMException(CIM_ERR_FAILED, parms);
+ }
+
+ if (!PEM_write_bio_X509_CRL(outFile, xCrl))
+ {
+ BIO_free_all(outFile);
+ PEG_TRACE_STRING(TRC_CONTROLPROVIDER, Tracer::LEVEL2,
+ "Unable to add CRL to truststore. "
+ "Error while trying to write CRL, PEM_write_bio_X509_CRL returned error");
+ MessageLoaderParms parms("ControlProviders.CertificateProvider.ERROR_WRITING_CRL",
+ "Unable to add CRL to truststore. Error while trying to write CRL.");
+ throw CIMException(CIM_ERR_FAILED, parms);
+ }
+
BIO_free_all(outFile);
Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,

View File

@ -1,605 +0,0 @@
--- pegasus/src/Providers/ManagedSystem/OperatingSystem/OperatingSystem_Linux.cpp.obz4955 2006-01-30 11:18:48.000000000 -0500
+++ pegasus/src/Providers/ManagedSystem/OperatingSystem/OperatingSystem_Linux.cpp 2006-05-02 14:43:14.000000000 -0400
@@ -96,59 +96,75 @@
/**
- getName method of the Linux implementation for the OS Provider
-
- Calls uname() to get the operating system name.
+ getVendorInfo method for Linux implementation of OS Provider
+ Gets the system text from vendor's release file
*/
-Boolean OperatingSystem::getName(String& osName)
+static void getVendorInfo(
+ String& releaseText,
+ String& nameText )
{
- String s, buffer_s;
- Uint32 buffer_index; // rexex match index
+ static const Uint32 MAX_RELEASE_STRING_LEN=128;
char info_file[MAXPATHLEN];
- char buffer[MAXPATHLEN];
+ char buffer[MAX_RELEASE_STRING_LEN];
struct stat statBuf;
- FILE *vf;
- s.clear();
+
for (int ii = 0; LINUX_VENDOR_INFO[ii].vendor_name != NULL ; ii++)
{
- memset(info_file, 0, MAXPATHLEN);
- strcat(info_file, "/etc/");
- strcat(info_file, LINUX_VENDOR_INFO[ii].determining_filename);
-
+ sprintf(info_file, "/etc/%s",
+ LINUX_VENDOR_INFO[ii].determining_filename );
// If the file exists in /etc, we know what distro we're in
if (!stat(info_file, &statBuf))
{
- s.assign(LINUX_VENDOR_INFO[ii].vendor_name);
- s.append(" Distribution");
+ // Set the default OS name
+ nameText.assign(LINUX_VENDOR_INFO[ii].vendor_name);
+ nameText.append(" Distribution");
if (LINUX_VENDOR_INFO[ii].optional_string == NULL)
{
- // try to set s to a more descript value from the etc file
- vf = fopen(info_file, "r");
+ // try to set text to a more descriptive value from the etc file
+ FILE *vf = fopen(info_file, "r");
if (vf)
{
- if (fgets(buffer, MAXPATHLEN, vf) != NULL)
- {
- buffer_s.assign(buffer);
-
- // parse the text to extract Distribution Name
- buffer_index = buffer_s.find(" release");
- if ( buffer_index != PEG_NOT_FOUND )
- {
- // then we have found a valid index into the config file
- s.assign(buffer_s.subString(0,buffer_index));
- }
+ if (fgets(buffer, MAX_RELEASE_STRING_LEN, vf) != NULL)
+ {
+ String buffer_s = buffer;
+
+ // parse the text to extract first line
+ Uint32 buffer_index = buffer_s.find( '\n' );
+ if ( buffer_index != PEG_NOT_FOUND )
+ {
+ // We have found a valid index into the
+ // release string. Now get just the OS name.
+ releaseText = buffer_s.subString(0,buffer_index);
+ buffer_index = releaseText.find( " release" );
+ if ( buffer_index != PEG_NOT_FOUND )
+ {
+ nameText.assign( releaseText.subString(0,buffer_index) );
+ }
+ }
}
fclose(vf);
}
}
+ break;
}
}
- osName.assign(s);
- return true;
+}
+
+/**
+ getName method of the Linux implementation for the OS Provider
+
+ Calls getVendorInfo() to get the operating system name.
+ */
+Boolean OperatingSystem::getName(String& osName)
+{
+ String releaseText;
+ getVendorInfo( releaseText, osName );
+
+ return true;
}
/**
@@ -204,23 +220,24 @@
/**
getCaption method for Linux implementation of OS Provider
- Uses a string constant for the Caption.
+ Gets the text from the system's release file.
*/
Boolean OperatingSystem::getCaption(String& caption)
{
-
- caption.assign("The current Operating System");
-
+ String osName;
+ getVendorInfo( caption, osName );
return true;
}
+/**
+ getDescription method for Linux implementation of OS Provider
+
+ Gets the text from the system's release file.
+ */
Boolean OperatingSystem::getDescription(String& description)
{
-
- description.assign("This instance reflects the Operating System"
- " on which the CIMOM is executing (as distinguished from instances"
- " of other installed operating systems that could be run).");
-
+ String osName;
+ getVendorInfo( description, osName );
return true;
}
--- pegasus/src/Providers/ManagedSystem/OperatingSystem/tests/OSTestClient/OSTestClient.cpp.obz4955 2006-01-30 11:18:49.000000000 -0500
+++ pegasus/src/Providers/ManagedSystem/OperatingSystem/tests/OSTestClient/OSTestClient.cpp 2006-05-02 14:45:05.000000000 -0400
@@ -61,6 +61,8 @@
# include "OSTestClient_VMS.cpp"
#elif defined (PEGASUS_OS_SOLARIS)
# include "OSTestClient_Solaris.cpp"
+#elif defined (PEGASUS_OS_LINUX)
+# include "OSTestClient_Linux.cpp"
# else
# include "OSTestClient_Stub.cpp"
#endif
--- pegasus/src/Providers/ManagedSystem/OperatingSystem/tests/OSTestClient/OSTestClient_Linux.cpp.obz4955 2006-05-02 14:46:08.000000000 -0400
+++ pegasus/src/Providers/ManagedSystem/OperatingSystem/tests/OSTestClient/OSTestClient_Linux.cpp 2006-05-02 14:38:31.000000000 -0400
@@ -0,0 +1,449 @@
+//%2006////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
+// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
+// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
+// IBM Corp.; EMC Corporation, The Open Group.
+// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
+// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
+// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
+// EMC Corporation; VERITAS Software Corporation; The Open Group.
+// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
+// EMC Corporation; Symantec Corporation; The Open Group.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
+// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
+// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+//==============================================================================
+//
+//
+//%/////////////////////////////////////////////////////////////////////////////
+
+
+// This file has the OS-specific routines that will be called to get
+// a validation of the CIM information vs. the current test system
+
+#include "OSTestClient.h"
+
+PEGASUS_USING_PEGASUS;
+PEGASUS_USING_STD;
+
+
+static const struct
+{
+ const char *vendor_name;
+ const char *determining_filename;
+ const char *optional_string;
+} LINUX_VENDOR_INFO[] = {
+ { "Caldera", "coas", "Caldera Linux" },
+ { "Corel", "environment.corel", "Corel Linux" },
+ { "Debian GNU/Linux", "debian_version", NULL },
+ { "Mandrake", "mandrake-release", NULL },
+ { "Red Hat", "redhat-release", NULL },
+ { "SuSE", "SuSE-release", NULL },
+ { "Turbolinux", "turbolinux-release", NULL },
+ { NULL, NULL, NULL }
+};
+
+
+/**
+ getVendorInfo method for Linux implementation of OS Provider
+
+ Gets the system text from vendor's release file
+ */
+static void getVendorInfo(
+ String& releaseText,
+ String& nameText )
+{
+ static const Uint32 MAX_RELEASE_STRING_LEN=128;
+ char info_file[MAXPATHLEN];
+ char buffer[MAX_RELEASE_STRING_LEN];
+ struct stat statBuf;
+
+
+ for (int ii = 0; LINUX_VENDOR_INFO[ii].vendor_name != NULL ; ii++)
+ {
+ sprintf(info_file, "/etc/%s",
+ LINUX_VENDOR_INFO[ii].determining_filename );
+
+ // If the file exists in /etc, we know what distro we're in
+ if (!stat(info_file, &statBuf))
+ {
+ // Set the default OS name
+ nameText.assign(LINUX_VENDOR_INFO[ii].vendor_name);
+ nameText.append(" Distribution");
+ if (LINUX_VENDOR_INFO[ii].optional_string == NULL)
+ {
+ // try to set text to a more descriptive value from the etc file
+ FILE *vf = fopen(info_file, "r");
+ if (vf)
+ {
+ if (fgets(buffer, MAX_RELEASE_STRING_LEN, vf) != NULL)
+ {
+ String buffer_s = buffer;
+
+ // parse the text to extract first line
+ Uint32 buffer_index = buffer_s.find( '\n' );
+ if ( buffer_index != PEG_NOT_FOUND )
+ {
+ // We have found a valid index into the
+ // release string. Now get just the OS name.
+ releaseText = buffer_s.subString(0,buffer_index);
+ buffer_index = releaseText.find( " release" );
+ if ( buffer_index != PEG_NOT_FOUND )
+ {
+ nameText.assign( releaseText.subString(0,buffer_index) );
+ }
+ }
+ }
+ fclose(vf);
+ }
+ }
+ break;
+ }
+ }
+}
+
+/**
+ goodCSCreationClassName method for the OS Provider Test Client
+
+ Checks the specified value against the expected value and
+ returns TRUE if valid, else FALSE.
+ */
+Boolean OSTestClient::goodCSCreationClassName(const String &cs_ccn,
+ Boolean verbose)
+{
+ // This assumes the only right answer is CIM_UnitaryComputerSystem
+ // replace with approprate check for the given OS/Provider
+
+ if (verbose)
+ cout<<"Checking " <<cs_ccn<< " against CIM_UnitaryComputerSystem"<<endl;
+ return (String::equalNoCase(cs_ccn, "CIM_UnitaryComputerSystem"));
+}
+
+/*
+ GoodCSName method for the OS Provider Test Client
+
+ Checks the specified value against the expected value and
+ returns TRUE if the same, else FALSE
+ */
+Boolean OSTestClient::goodCSName(const String &csname, Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking " <<csname<< " against hostname " <<endl;
+ cout<<"- No check written for CSName " <<endl;
+
+ // always returns success; replace with appropriate OS/Provider code
+ return true;
+}
+
+/*
+ GoodCreationClassName method for the OS Provider Test Client
+
+ Checks the specified value against the expected value and
+ returns TRUE if the same, else FALSE
+ */
+Boolean OSTestClient::goodCreationClassName(const String &ccn,
+ Boolean verbose)
+{
+ // This assumes the only right answer is CIM_OperatingSystem
+ // replace with approprate check for the given OS/Provider
+
+ if (verbose)
+ cout<<"Checking " << ccn << " against CIM_OperatingSystem"<<endl;
+
+ return (String::equalNoCase(ccn, "CIM_OperatingSystem"));
+}
+
+/*
+ GoodName method for the OS Provider Test Client
+
+ Checks the specified value against the expected value and
+ returns TRUE if the same, else FALSE
+ */
+Boolean OSTestClient::goodName(const String &name, Boolean verbose)
+{
+ String releaseText, osName;
+
+ if (verbose)
+ cout<<"Checking " << name << " against OS name "<<endl;
+ getVendorInfo( releaseText, osName );
+ return (String::equal( name, osName ));
+}
+/* GoodCaption method for the OS Provider Test Client
+
+ Checks the specified value against the expected value
+ and returns TRUE if the same, else FALSE
+ */
+Boolean OSTestClient::goodCaption(const String &cap,
+ Boolean verbose)
+{
+ String releaseText, osName;
+
+ // has check against standard caption
+ if (verbose)
+ cout<<"Checking Caption " << cap << endl;
+ getVendorInfo( releaseText, osName );
+ return (String::equal(cap, releaseText ) );
+}
+
+/*
+ GoodDescription method for the OS Provider Test Client
+
+ Checks the specified value against the expected value and
+ returns TRUE if the same, else FALSE
+ */
+Boolean OSTestClient::goodDescription(const String &desc,
+ Boolean verbose)
+{
+ String releaseText, osName;
+
+ // has check against standard description
+ if (verbose)
+ cout<<"Checking Description " << desc << endl;
+ getVendorInfo( releaseText, osName );
+ return (String::equal(desc, releaseText) );
+}
+
+/*
+ GoodInstallDate method for the OS Provider Test Client
+
+ Checks the specified value against the expected value and
+ returns TRUE if the same, else FALSE
+ */
+Boolean OSTestClient::goodInstallDate(const CIMDateTime &idate,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking InstallDate " << idate.toString() << endl;
+ cout<<"- No check written for InstallDate " << endl;
+ return true;
+}
+
+/*
+ GoodStatus method for the OS Provider Test Client
+
+ Checks the specified value against the expected value and
+ returns TRUE if the same, else FALSE
+ */
+Boolean OSTestClient::goodStatus(const String &stat,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking Status" << stat << endl;
+ cout<<"- No check written for Status " << endl;
+ return true;
+}
+
+/*
+ GoodOSType method for the OS Provider Test Client
+
+ Checks the specified value against the expected value and
+ returns TRUE if the same, else FALSE
+ */
+Boolean OSTestClient::goodOSType(const Uint16 &ostype,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking OSType " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodOtherTypeDescription(const String &otdesc,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking OtherTypeDescription " << otdesc << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodVersion(const String &version, Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking Version " << version << endl;
+ cout<<"- No check written for Version " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodLastBootUpTime(const CIMDateTime &btime,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking LastBootUpTime " << btime.toString() << endl;
+ cout<<"- No check written for LastBootUpTime " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodLocalDateTime(const CIMDateTime &ltime,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking LocalDateTime " << ltime.toString() << endl;
+ cout<<"- No check written for LocalDateTime " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodCurrentTimeZone(const Sint16 &tz, Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking CurrentTimeZone " << tz << endl;
+ cout<<"- No check written for CurrentTimeZone " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodNumberOfLicensedUsers(const Uint32 &nlusers,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking NumberOfLicensedUsers " << nlusers << endl;
+ cout<<"- No check written for NumberOfLicensedUsers " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodNumberOfUsers(const Uint32 &nusers,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking NumberOfUsers " << nusers << endl;
+ cout<<"- No check written for NumberOfUsers " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodNumberOfProcesses(const Uint32 &nprocs,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking NumberOfProcesses " << nprocs << endl;
+ cout<<"- No check written for NumberOfProcesses " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodMaxNumberOfProcesses(const Uint32 &maxprocs,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking MaxNumberOfProcs " << maxprocs << endl;
+ cout<<"- No check written for MaxNumberOfProcesses " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodTotalSwapSpaceSize(const Uint64 &totalswap,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking TotalSwapSpaceSize " << endl;
+ cout<<"- No check written for TotalSwapSpaceSize " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodTotalVirtualMemorySize(const Uint64 &totalvmem,
+ Boolean verbose)
+
+{
+ if (verbose)
+ cout<<"Checking TotalVirtualMemorySize " << endl;
+ cout<<"- No check written for TotalVirtualMemorySize" << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodFreeVirtualMemory(const Uint64 &freevmem,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking FreeVirtualMemory " << endl;
+ cout<<"- No check written for FreeVirtualMemory" << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodFreePhysicalMemory(const Uint64 &freepmem,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking FreePhysicalMemory " << endl;
+ cout<<"- No check written for FreePhysicalMemory" << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodTotalVisibleMemorySize(const Uint64 &totalvmem,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking TotalVisibleMemorySize " << endl;
+ cout<<"- No check written for TotalVisibleMemorySize" << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodSizeStoredInPagingFiles(const Uint64 &pgsize,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking SizeStoredInPagingFiles " << endl;
+ cout<<"- No check written for SizeStoredInPagingFiles" << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodFreeSpaceInPagingFiles(const Uint64 &freepg,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking FreeSpaceInPagingFiles " << endl;
+ cout<<"- No check written for FreeSpaceInPagingFiles" << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodMaxProcessMemorySize(const Uint64 &maxpmem,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking MaxProcessMemSize " << endl;
+ cout<<"- No check written for MaxProcessMemSize " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodDistributed(const Boolean &distr,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking Distributed " << endl;
+ cout<<"- No check written for Distributed " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodMaxProcessesPerUser(const Uint32 &umaxproc,
+ Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking MaxProcsPerUser " << umaxproc << endl;
+ cout<<"- No check written for MaxProcsPerUser " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodOSCapability(const String &cap, Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking OSCapability " << cap << endl;
+ cout<<"- No check written for OSCapability " << endl;
+ return true;
+}
+
+Boolean OSTestClient::goodSystemUpTime(const Uint64 &uptime, Boolean verbose)
+{
+ if (verbose)
+ cout<<"Checking SystemUpTime " << endl;
+ cout<<"- No check written for SystemUpTime " << endl;
+ return true;
+}
+

View File

@ -1,92 +0,0 @@
--- pegasus/src/Pegasus/Common/HTTPConnection.cpp.obz4956 2006-05-02 14:27:39.000000000 -0400
+++ pegasus/src/Pegasus/Common/HTTPConnection.cpp 2006-05-02 15:09:56.000000000 -0400
@@ -1036,10 +1036,20 @@
// reserve space for entire non-chunked message
if (_contentLength > 0)
{
- Uint32 capacity = (Uint32)(_contentLength + _contentOffset + 1);
- _incomingBuffer.reserveCapacity(capacity);
- data = (char *)_incomingBuffer.getData();
- data[capacity-1] = 0;
+ try
+ {
+ Uint32 capacity = (Uint32)(_contentLength + _contentOffset + 1);
+ _incomingBuffer.reserveCapacity(capacity);
+ data = (char *)_incomingBuffer.getData();
+ data[capacity-1] = 0;
+ }catch(const PEGASUS_STD(bad_alloc)&)
+ {
+ _throwEventFailure(HTTP_STATUS_REQUEST_TOO_LARGE,
+ "Error reserving space for non-chunked message");
+ }catch(...)
+ {
+ _throwEventFailure(httpStatusInternal, "unexpected exception");
+ }
}
break;
--- pegasus/src/Pegasus/Common/String.cpp.obz4956 2006-05-02 14:27:39.000000000 -0400
+++ pegasus/src/Pegasus/Common/String.cpp 2006-05-02 15:12:59.000000000 -0400
@@ -51,6 +51,10 @@
#include <unicode/uchar.h>
#endif
+#ifndef PEGASUS_CHECK_FOR_OVERFLOW
+#define PEGASUS_CHECK_FOR_OVERFLOW(capacity) { if (capacity > 0x3FFFFFFF) throw PEGASUS_STD(bad_alloc)(); }
+#endif
+
PEGASUS_NAMESPACE_BEGIN
//==============================================================================
@@ -166,8 +170,7 @@
{
#ifndef PEGASUS_STRING_NO_THROW
- if (x > 0x0FFFFFFF)
- throw PEGASUS_STD(bad_alloc)();
+ PEGASUS_CHECK_FOR_OVERFLOW(x);
#endif
@@ -545,9 +548,7 @@
{
#ifndef PEGASUS_STRING_NO_THROW
- // Any string bigger than this is seriously suspect.
- if (cap > 0x0FFFFFFF)
- throw PEGASUS_STD(bad_alloc)();
+ PEGASUS_CHECK_FOR_OVERFLOW(cap);
#endif
--- pegasus/src/Pegasus/Common/Buffer.cpp.obz4956 2006-03-17 13:59:03.000000000 -0500
+++ pegasus/src/Pegasus/Common/Buffer.cpp 2006-05-02 15:06:06.000000000 -0400
@@ -43,11 +43,17 @@
static const size_t MIN_CAPACITY = 2048;
+#ifndef PEGASUS_CHECK_FOR_OVERFLOW
+#define PEGASUS_CHECK_FOR_OVERFLOW(capacity) { if (capacity > 0x3FFFFFFF) throw PEGASUS_STD(bad_alloc)(); }
+#endif
+
static Uint32 _next_pow_2(Uint32 x)
{
if (x < MIN_CAPACITY)
return MIN_CAPACITY;
+ PEGASUS_CHECK_FOR_OVERFLOW(x);
+
x--;
x |= (x >> 1);
x |= (x >> 2);
@@ -132,7 +138,10 @@
_rep->size = 0;
}
else
+ {
+ PEGASUS_CHECK_FOR_OVERFLOW(_rep->cap);
_rep = _reallocate(_rep, _rep->cap ? (2 * _rep->cap) : MIN_CAPACITY);
+ }
}
void Buffer::insert(size_t pos, const char* data, size_t size)

View File

@ -1,65 +0,0 @@
--- pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Broker.cpp.obz4968_upcalls_oop 2006-03-15 07:53:08.000000000 -0500
+++ pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Broker.cpp 2006-05-02 14:29:16.000000000 -0400
@@ -313,8 +313,18 @@
CM_ObjectPath(cop)->getNameSpace(),
CM_ObjectPath(cop)->getClassName());
if (rc) CMSetStatus(rc,CMPI_RC_OK);
- CMPI_Object *obj =
- new CMPI_Object(new CMPI_OpEnumeration(new Array<CIMObjectPath>(en)));
+
+ // When running out of process the returned instances don't contain
+ // a name space. Create a writable copy of the array and add the
+ // namespace from the input parameters.
+ Array<CIMObjectPath> * aObj = new Array<CIMObjectPath>(en);
+ for (unsigned int index=0;index < aObj->size(); index++)
+ {
+ (*aObj)[index].setNameSpace(CM_ObjectPath(cop)->getNameSpace());
+ }
+
+ CMPI_Object *obj = new CMPI_Object(new CMPI_OpEnumeration(aObj));
+
return (CMPI_OpEnumeration *)obj->getHdl();
}
@@ -408,8 +418,18 @@
role ? String(role) : String::EMPTY,
resultRole ? String(resultRole) : String::EMPTY);
if (rc) CMSetStatus(rc,CMPI_RC_OK);
- CMPI_Object *obj =
- new CMPI_Object(new CMPI_OpEnumeration(new Array<CIMObjectPath>(en)));
+
+ // When running out of process the returned instances don't contain
+ // a name space. Create a writable copy of the array and add the
+ // namespace from the input parameters.
+ Array<CIMObjectPath> * aObj = new Array<CIMObjectPath>(en);
+ for (unsigned int index=0;index < aObj->size(); index++)
+ {
+ (*aObj)[index].setNameSpace(CM_ObjectPath(cop)->getNameSpace());
+ }
+
+ CMPI_Object *obj = new CMPI_Object(new CMPI_OpEnumeration(aObj));
+
return (CMPI_OpEnumeration *)obj->getHdl();
}
catch (const CIMException &e) {
@@ -493,8 +513,18 @@
resultClass ? CIMName(resultClass) : CIMName(),
role ? String(role) : String::EMPTY);
if (rc) CMSetStatus(rc,CMPI_RC_OK);
- CMPI_Object *obj =
- new CMPI_Object(new CMPI_OpEnumeration(new Array<CIMObjectPath>(en)));
+
+ // When running out of process the returned instances don't contain
+ // a name space. Create a writable copy of the array and add the
+ // namespace from the input parameters.
+ Array<CIMObjectPath> * aObj = new Array<CIMObjectPath>(en);
+ for (unsigned int index=0;index < aObj->size(); index++)
+ {
+ (*aObj)[index].setNameSpace(CM_ObjectPath(cop)->getNameSpace());
+ }
+
+ CMPI_Object *obj = new CMPI_Object(new CMPI_OpEnumeration(aObj));
+
return (CMPI_OpEnumeration *)obj->getHdl();
}
catch (const CIMException &e) {

View File

@ -1,313 +0,0 @@
--- pegasus/src/Pegasus/Handler/snmpIndicationHandler/snmpIndicationHandler.cpp.obz4978 2006-01-30 11:17:54.000000000 -0500
+++ pegasus/src/Pegasus/Handler/snmpIndicationHandler/snmpIndicationHandler.cpp 2006-05-02 15:23:37.000000000 -0400
@@ -62,9 +62,54 @@
PEGASUS_USING_STD;
+#ifdef HPUX_EMANATE
+ static snmpDeliverTrap_emanate snmpTrap;
+#elif defined (PEGASUS_USE_NET_SNMP)
+ static snmpDeliverTrap_netsnmp snmpTrap;
+#else
+ static snmpDeliverTrap_stub snmpTrap;
+#endif
+
+snmpIndicationHandler::snmpIndicationHandler()
+{
+ PEG_METHOD_ENTER (TRC_IND_HANDLER,
+ "snmpIndicationHandler::snmpIndicationHandler");
+ PEG_METHOD_EXIT();
+}
+
void snmpIndicationHandler::initialize(CIMRepository* repository)
{
+ PEG_METHOD_ENTER (TRC_IND_HANDLER,
+ "snmpIndicationHandler::initialize");
+
_repository = repository;
+
+#ifdef PEGASUS_USE_NET_SNMP
+ snmpTrap.initialize();
+#endif
+
+ PEG_METHOD_EXIT();
+}
+
+void snmpIndicationHandler::terminate()
+{
+ PEG_METHOD_ENTER (TRC_IND_HANDLER,
+ "snmpIndicationHandler::terminate");
+
+#ifdef PEGASUS_USE_NET_SNMP
+ snmpTrap.terminate();
+#endif
+
+ PEG_METHOD_EXIT();
+}
+
+snmpIndicationHandler::~snmpIndicationHandler()
+{
+ PEG_METHOD_ENTER (TRC_IND_HANDLER,
+ "snmpIndicationHandler::~snmpIndicationHandler");
+
+
+ PEG_METHOD_EXIT();
}
// l10n - note: ignoring indication language
@@ -153,14 +198,6 @@
// trap destination and SNMP type are defined in handlerInstance
// and passing this instance as it is to deliverTrap() call
-#ifdef HPUX_EMANATE
- static snmpDeliverTrap_emanate emanateTrap;
-#elif defined (PEGASUS_USE_NET_SNMP)
- static snmpDeliverTrap_netsnmp emanateTrap;
-#else
- static snmpDeliverTrap_stub emanateTrap;
-#endif
-
Uint32 targetHostPos = handler.findProperty(CIMName ("TargetHost"));
Uint32 targetHostFormatPos = handler.findProperty(CIMName ("TargetHostFormat"));
Uint32 otherTargetHostFormatPos = handler.findProperty(CIMName (
@@ -263,7 +300,7 @@
handler.getProperty(engineIDPos).getValue().get(engineID);
}
- emanateTrap.deliverTrap(
+ snmpTrap.deliverTrap(
trapOid,
securityName,
targetHost,
@@ -315,6 +352,8 @@
MessageLoaderParms("Handler.snmpIndicationHandler.snmpIndicationHandler.FAILED_TO_DELIVER_TRAP",
"Failed to deliver trap."));
}
+
+ PEG_METHOD_EXIT();
}
// This is the dynamic entry point into this dynamic module. The name of
--- pegasus/src/Pegasus/Handler/snmpIndicationHandler/snmpDeliverTrap_netsnmp.cpp.obz4978 2006-01-30 11:17:54.000000000 -0500
+++ pegasus/src/Pegasus/Handler/snmpIndicationHandler/snmpDeliverTrap_netsnmp.cpp 2006-05-02 15:23:37.000000000 -0400
@@ -41,6 +41,49 @@
PEGASUS_NAMESPACE_BEGIN
+void snmpDeliverTrap_netsnmp::initialize()
+{
+
+ PEG_METHOD_ENTER (TRC_IND_HANDLER,
+ "snmpDeliverTrap_netsnmp::initialize");
+
+ // Defined default MIB modules (in net-snmp-config.h) do not need to be
+ // loaded and loading them can cause some stderr;
+ // use environment variable MIBS to override the default MIB modules.
+ // If there is no MIBS environment variable, add it in.
+ char *envVar;
+ envVar = getenv("MIBS");
+
+ if (envVar == NULL)
+ {
+ putenv("MIBS=");
+ }
+
+ // Initialize the mib reader
+ netsnmp_set_mib_directory("");
+ init_mib();
+
+ // Initializes the SNMP library
+ init_snmp("snmpIndicationHandler");
+
+ // windows32 specific initialization (is a NOOP on unix)
+ SOCK_STARTUP;
+
+ PEG_METHOD_EXIT ();
+
+}
+
+void snmpDeliverTrap_netsnmp::terminate()
+{
+
+ PEG_METHOD_ENTER (TRC_IND_HANDLER,
+ "snmpDeliverTrap_netsnmp::terminate");
+
+ SOCK_CLEANUP;
+
+ PEG_METHOD_EXIT ();
+}
+
void snmpDeliverTrap_netsnmp::deliverTrap(
const String& trapOid,
const String& securityName,
@@ -59,12 +102,12 @@
"snmpDeliverTrap_netsnmp::deliverTrap");
void *sessionHandle;
- struct snmp_session snmpSession, *sessionPtr;
+ struct snmp_session *sessionPtr;
struct snmp_pdu *snmpPdu;
// Creates a SNMP session
- _createSession(targetHost, portNumber, securityName, snmpSession,
+ _createSession(targetHost, portNumber, securityName,
sessionHandle, sessionPtr);
try
@@ -138,7 +181,6 @@
const String & targetHost,
Uint32 portNumber,
const String & securityName,
- snmp_session & snmpSession,
void *&sessionHandle,
snmp_session *&sessionPtr)
{
@@ -148,34 +190,13 @@
Sint32 libErr, sysErr;
char *errStr;
String exceptionStr;
+
+ struct snmp_session snmpSession;
- // Defined default MIB modules (in net-snmp-config.h) do not need to be
- // loaded and loading them can cause some stderr;
- // use environment variable MIBS to override the default MIB modules.
- // If there is no MIBS environment variable, add it in.
-
- char *envVar;
- envVar = getenv("MIBS");
-
- if (envVar == NULL)
{
- putenv("MIBS=");
- }
-
- // Initialize the mib reader
- netsnmp_set_mib_directory("");
- init_mib();
-
- // Initializes the SNMP library
- init_snmp("snmpIndicationHandler");
-
- // Prepares a struct snmp_session that will be used for a set of
- // SNMP transactions
+ AutoMutex autoMut(_sessionInitMutex);
snmp_sess_init(&snmpSession);
- // windows32 specific initialization (is a NOOP on unix)
- SOCK_STARTUP;
-
CString targetHostCStr = targetHost.getCString();
// peername has format: targetHost:portNumber
@@ -183,7 +204,9 @@
1+32));
sprintf(snmpSession.peername, "%s:%u", (const char*)targetHostCStr,
portNumber);
+
sessionHandle = snmp_sess_open(&snmpSession);
+ }
if (sessionHandle == NULL)
{
@@ -196,8 +219,6 @@
free(errStr);
- SOCK_CLEANUP;
-
PEG_METHOD_EXIT ();
throw PEGASUS_CIM_EXCEPTION_L (CIM_ERR_FAILED,
@@ -276,8 +297,6 @@
snmp_sess_close(sessionHandle);
- SOCK_CLEANUP;
-
PEG_METHOD_EXIT ();
}
--- pegasus/src/Pegasus/Handler/snmpIndicationHandler/snmpIndicationHandler.h.obz4978 2006-01-30 11:17:54.000000000 -0500
+++ pegasus/src/Pegasus/Handler/snmpIndicationHandler/snmpIndicationHandler.h 2006-05-02 15:23:37.000000000 -0400
@@ -50,19 +50,13 @@
CIMRepository* _repository;
- snmpIndicationHandler()
- {
- }
-
- virtual ~snmpIndicationHandler()
- {
- }
+ snmpIndicationHandler();
+
+ virtual ~snmpIndicationHandler();
void initialize(CIMRepository* repository);
- void terminate()
- {
- }
+ void terminate();
void handleIndication(
const OperationContext& context,
@@ -71,6 +65,7 @@
CIMInstance& handler,
CIMInstance& subscription,
ContentLanguageList& contentLanguages);
+
};
PEGASUS_NAMESPACE_END
--- pegasus/src/Pegasus/Handler/snmpIndicationHandler/snmpDeliverTrap_netsnmp.h.obz4978 2006-01-30 11:17:54.000000000 -0500
+++ pegasus/src/Pegasus/Handler/snmpIndicationHandler/snmpDeliverTrap_netsnmp.h 2006-05-02 15:23:37.000000000 -0400
@@ -37,6 +37,7 @@
#include <iostream>
+#include <Pegasus/Common/IPC.h>
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include "snmpDeliverTrap.h"
@@ -120,6 +121,10 @@
{
public:
+ void initialize();
+
+ void terminate();
+
void deliverTrap(
const String& trapOid,
const String& securityName,
@@ -135,6 +140,10 @@
private:
+ // Mutex is needed before a session is created. Sessions created
+ // using the Single API do not interact with other SNMP sessions.
+ Mutex _sessionInitMutex;
+
/**
Creates a SNMP session.
@@ -143,7 +152,6 @@
to receive a trap
@param portNumber the port number to receive a trap
@param securityName the human readable community name
- @param snmpSession the SNMP session
@param sessionHandle an opaque pointer of the SNMP session
@param sessionPtr the SNMP session pointer to its associated
struct snmp_session
@@ -153,7 +161,6 @@
void _createSession(const String & targetHost,
Uint32 portNumber,
const String & securityName,
- struct snmp_session & snmpSession,
void *&sessionHandle,
struct snmp_session *&sessionPtr);

View File

@ -1,18 +0,0 @@
--- pegasus/src/Pegasus/ProviderManager2/ProviderAgent/ProviderAgent.cpp.obz4983 2006-02-28 14:53:31.000000000 -0500
+++ pegasus/src/Pegasus/ProviderManager2/ProviderAgent/ProviderAgent.cpp 2006-05-02 15:30:34.000000000 -0400
@@ -589,6 +589,7 @@
// Send request back to the server to process
_providerAgent->_writeResponse(message);
+ delete message;
PEG_METHOD_EXIT();
}
@@ -601,6 +602,7 @@
// Send request back to the server to process
_providerAgent->_writeResponse(response);
+ delete response;
PEG_METHOD_EXIT();
}

View File

@ -1,269 +0,0 @@
--- pegasus/src/Pegasus/ProviderManager2/OOPProviderManagerRouter.cpp.obz4980 2006-03-15 16:28:36.000000000 -0500
+++ pegasus/src/Pegasus/ProviderManager2/OOPProviderManagerRouter.cpp 2006-05-02 15:34:36.000000000 -0400
@@ -523,6 +523,28 @@
//Out of provider support for OS400 goes here when needed.
#else
+
+# ifndef PEGASUS_DISABLE_PROV_USERCTXT
+ // Get and save the effective user name and the uid/gid for the user
+ // context of the agent process
+
+ String effectiveUserName = System::getEffectiveUserName();
+ PEGASUS_UID_T newUid = (PEGASUS_UID_T) -1;
+ PEGASUS_GID_T newGid = (PEGASUS_GID_T) -1;
+ if (_userName != effectiveUserName)
+ {
+ if (!System::lookupUserId(_userName.getCString(), newUid, newGid))
+ {
+ throw PEGASUS_CIM_EXCEPTION_L(
+ CIM_ERR_FAILED,
+ MessageLoaderParms(
+ "ProviderManager.OOPProviderManagerRouter."
+ "USER_CONTEXT_CHANGE_FAILED",
+ "Unable to change user context to \"$0\".", _userName));
+ }
+ }
+# endif
+
pid_t pid = fork();
if (pid < 0)
{
@@ -558,11 +580,11 @@
pipeToAgent->exportReadHandle(readHandle);
pipeFromAgent->exportWriteHandle(writeHandle);
-#ifndef PEGASUS_DISABLE_PROV_USERCTXT
+# ifndef PEGASUS_DISABLE_PROV_USERCTXT
// Set the user context of the Provider Agent process
- if (_userName != System::getEffectiveUserName())
+ if (_userName != effectiveUserName)
{
- if (!System::changeUserContext(_userName.getCString()))
+ if (!System::changeUserContext(newUid, newGid))
{
Tracer::trace(TRC_DISCARDED_DATA, Tracer::LEVEL2,
"System::changeUserContext() failed. userName = %s.",
@@ -575,7 +597,7 @@
_exit(1);
}
}
-#endif
+# endif
execl(agentCommandPathCString, agentCommandPathCString,
readHandle, writeHandle,
@@ -1667,7 +1689,7 @@
request->operationContext.get(IdentityContainer::NAME);
userName = ic.getUserName();
}
- catch (Exception& e)
+ catch (Exception&)
{
// If no IdentityContainer is present, default to the CIM
// Server's user context
--- pegasus/src/Pegasus/Common/SystemVms.cpp.obz4980 2006-01-30 11:17:08.000000000 -0500
+++ pegasus/src/Pegasus/Common/SystemVms.cpp 2006-05-02 15:34:36.000000000 -0400
@@ -674,7 +674,10 @@
#endif
-Boolean System::changeUserContext(const char *userName)
+Boolean System::lookupUserId(
+ const char* userName,
+ PEGASUS_UID_T& uid,
+ PEGASUS_GID_T& gid)
{
const unsigned int PWD_BUFF_SIZE = 1024;
struct passwd pwd;
@@ -697,18 +700,28 @@
return false;
}
+ uid = pwd.pw_uid;
+ gid = pwd.pw_gid;
+
+ return true;
+}
+
+Boolean System::changeUserContext(
+ const PEGASUS_UID_T& uid,
+ const PEGASUS_GID_T& gid)
+{
Tracer::trace(TRC_OS_ABSTRACTION, Tracer::LEVEL4,
"Changing user context to: uid = %d, gid = %d",
- (int) pwd.pw_uid, (int) pwd.pw_gid);
+ (int) uid, (int) gid);
- if (setgid(pwd.pw_gid) != 0)
+ if (setgid(gid) != 0)
{
PEG_TRACE_STRING(TRC_OS_ABSTRACTION, Tracer::LEVEL2,
String("setgid failed: ") + String(strerror(errno)));
return false;
}
- if (setuid(pwd.pw_uid) != 0)
+ if (setuid(uid) != 0)
{
PEG_TRACE_STRING(TRC_OS_ABSTRACTION, Tracer::LEVEL2,
String("setuid failed: ") + String(strerror(errno)));
--- pegasus/src/Pegasus/Common/SystemWindows.cpp.obz4980 2006-02-08 15:50:59.000000000 -0500
+++ pegasus/src/Pegasus/Common/SystemWindows.cpp 2006-05-02 15:34:36.000000000 -0400
@@ -838,7 +838,18 @@
return retVal;
}
-Boolean System::changeUserContext(const char* userName)
+Boolean System::lookupUserId(
+ const char* userName,
+ PEGASUS_UID_T& uid,
+ PEGASUS_GID_T& gid)
+{
+ // ATTN: Implement this method to look up the specified user
+ return false;
+}
+
+Boolean System::changeUserContext(
+ const PEGASUS_UID_T& uid,
+ const PEGASUS_GID_T& gid)
{
// ATTN: Implement this method to change the process user context to the
// specified user
--- pegasus/src/Pegasus/Common/SystemNsk.cpp.obz4980 2006-01-30 11:17:08.000000000 -0500
+++ pegasus/src/Pegasus/Common/SystemNsk.cpp 2006-05-02 15:34:36.000000000 -0400
@@ -157,7 +157,18 @@
return true;
}
-Boolean System::changeUserContext(const char* userName)
+Boolean System::lookupUserId(
+ const char* userName,
+ PEGASUS_UID_T& uid,
+ PEGASUS_GID_T& gid)
+{
+ // ATTN: Implement this method to look up the specified user
+ return false;
+}
+
+Boolean System::changeUserContext(
+ const PEGASUS_UID_T& uid,
+ const PEGASUS_GID_T& gid)
{
// ATTN: Implement this method to change the process user context to the
// specified user
--- pegasus/src/Pegasus/Common/SystemUnix.cpp.obz4980 2006-01-30 11:17:08.000000000 -0500
+++ pegasus/src/Pegasus/Common/SystemUnix.cpp 2006-05-02 15:34:36.000000000 -0400
@@ -1097,8 +1097,12 @@
return retVal;
}
+
#ifndef PEGASUS_OS_OS400
-Boolean System::changeUserContext(const char* userName)
+Boolean System::lookupUserId(
+ const char* userName,
+ PEGASUS_UID_T& uid,
+ PEGASUS_GID_T& gid)
{
const unsigned int PWD_BUFF_SIZE = 1024;
struct passwd pwd;
@@ -1129,18 +1133,28 @@
return false;
}
+ uid = pwd.pw_uid;
+ gid = pwd.pw_gid;
+
+ return true;
+}
+
+Boolean System::changeUserContext(
+ const PEGASUS_UID_T& uid,
+ const PEGASUS_GID_T& gid)
+{
Tracer::trace(TRC_OS_ABSTRACTION, Tracer::LEVEL4,
"Changing user context to: uid = %d, gid = %d",
- (int)pwd.pw_uid, (int)pwd.pw_gid);
+ (int)uid, (int)gid);
- if (setgid(pwd.pw_gid) != 0)
+ if (setgid(gid) != 0)
{
PEG_TRACE_STRING(TRC_OS_ABSTRACTION, Tracer::LEVEL2,
String("setgid failed: ") + String(strerror(errno)));
return false;
}
- if (setuid(pwd.pw_uid) != 0)
+ if (setuid(uid) != 0)
{
PEG_TRACE_STRING(TRC_OS_ABSTRACTION, Tracer::LEVEL2,
String("setuid failed: ") + String(strerror(errno)));
@@ -1150,6 +1164,7 @@
return true;
}
#endif
+
Uint32 System::getPID()
{
//
--- pegasus/src/Pegasus/Common/System.h.obz4980 2006-01-30 11:17:08.000000000 -0500
+++ pegasus/src/Pegasus/Common/System.h 2006-05-02 15:34:36.000000000 -0400
@@ -57,6 +57,16 @@
#endif
#endif
+#ifdef PEGASUS_OS_TYPE_UNIX
+# ifndef PEGASUS_OS_OS400
+# include <unistd.h>
+# endif
+# define PEGASUS_UID_T uid_t
+# define PEGASUS_GID_T gid_t
+#else
+# define PEGASUS_UID_T Uint32
+# define PEGASUS_GID_T Uint32
+#endif
//
// Protocal Type
@@ -246,16 +256,33 @@
static Boolean isGroupMember(const char* userName, const char* groupName);
/**
- Changes the process user context to the specified user.
-
- @param userName User name to set as the process user context.
+ Gets the user and group IDs associated with the specified user.
+ @param userName User name for which to look up user and group IDs.
+ @param uid User ID for the specified user name.
+ @param gid Group ID for the specified user name.
+ @return True if the user and group IDs were retrieved
+ successfully, false otherwise.
+ */
+#ifndef PEGASUS_OS_OS400
+ static Boolean lookupUserId(
+ const char* userName,
+ PEGASUS_UID_T& uid,
+ PEGASUS_GID_T& gid);
+#endif
- @return True if the user context is successfully changed,
- false otherwise.
+ /**
+ Changes the process user context to the specified user and group ID.
+ @param uid User ID to set as the process user context.
+ @param gid Group ID to set as the process group context.
+ @return True if the user context is successfully changed,
+ false otherwise.
*/
#ifndef PEGASUS_OS_OS400
- static Boolean changeUserContext(const char* userName);
+ static Boolean changeUserContext(
+ const PEGASUS_UID_T& uid,
+ const PEGASUS_GID_T& gid);
#endif
+
/**
This function is used to get the process ID of the calling process.

File diff suppressed because it is too large Load Diff

View File

@ -1,36 +0,0 @@
--- pegasus/rpm/manLinux/man1.Z/cimprovider.1.obz5046 2004-12-08 04:40:38.000000000 -0500
+++ pegasus/rpm/manLinux/man1.Z/cimprovider.1 2006-05-31 13:43:51.000000000 -0400
@@ -146,11 +146,13 @@
Error
.PD
.RE
-.SH "USAGE NOTE"
+.SH "USAGE NOTES"
.PP
The
.B cimprovider
command requires that the CIM Server is running.
+If an operation requires more than two minutes to complete, the cimprovider
+command prints a timeout message and returns an error value.
.SH "EXAMPLES "
.PP
Disable provider module "OperatingSystemProvider" and
--- pegasus/src/Clients/cimprovider/CIMProviderCommand.cpp.obz5046 2006-01-30 11:16:33.000000000 -0500
+++ pegasus/src/Clients/cimprovider/CIMProviderCommand.cpp 2006-05-31 14:02:17.000000000 -0400
@@ -69,6 +69,8 @@
#include "OS400ConvertChar.h"
#endif
+#define CIMPROVIDERCOMMAND_CLIENT_DEFAULTTIMEOUT 120000
+
PEGASUS_USING_STD;
PEGASUS_NAMESPACE_BEGIN
@@ -1145,6 +1147,7 @@
// Construct the CIMClient and set to request server messages
// in the default language of this client process.
_client.reset(new CIMClient);//PEP101
+ _client->setTimeout(CIMPROVIDERCOMMAND_CLIENT_DEFAULTTIMEOUT);
_client->setRequestDefaultLanguages(); //l10n
}
catch (Exception & e)

View File

@ -1,21 +0,0 @@
--- pegasus/src/Pegasus/Compiler/cimmofClient.h.obz5047 2006-01-30 11:17:33.000000000 -0500
+++ pegasus/src/Pegasus/Compiler/cimmofClient.h 2006-05-31 12:09:17.000000000 -0400
@@ -67,6 +67,8 @@
#include <Pegasus/Client/CIMClient.h>
#include <Pegasus/Compiler/Linkage.h>
+#define CIMMOFCLIENT_TIMEOUT_DEFAULT 120000
+
PEGASUS_NAMESPACE_BEGIN
// Forward declarations;
--- pegasus/src/Pegasus/Compiler/cimmofClient.cpp.obz5047 2006-01-30 11:17:33.000000000 -0500
+++ pegasus/src/Pegasus/Compiler/cimmofClient.cpp 2006-05-31 12:10:02.000000000 -0400
@@ -68,6 +68,7 @@
// our caller handle it.
_client = new CIMClient();
+ _client->setTimeout(CIMMOFCLIENT_TIMEOUT_DEFAULT);
_client->setRequestDefaultLanguages(); //l10n
#if defined(PEGASUS_OS_HPUX) || defined(PEGASUS_PLATFORM_LINUX_GENERIC_GNU) || defined(PEGASUS_OS_VMS)

View File

@ -1,25 +0,0 @@
--- pegasus/src/Pegasus/Client/CIMOperationRequestEncoder.cpp.obz5048 2006-01-30 11:16:42.000000000 -0500
+++ pegasus/src/Pegasus/Client/CIMOperationRequestEncoder.cpp 2006-05-31 12:14:31.000000000 -0400
@@ -67,6 +67,7 @@
_authenticator(authenticator),
_showOutput(showOutput)
{
+ dataStore_prt = NULL;
}
CIMOperationRequestEncoder::~CIMOperationRequestEncoder()
@@ -881,9 +882,11 @@
Uint32 contentLength;
http_request->parse(startLine, headers, contentLength);
- dataStore_prt->setRequestSize(contentLength);
- dataStore_prt->setStartNetworkTime();
-
+ if ( dataStore_prt )
+ {
+ dataStore_prt->setRequestSize(contentLength);
+ dataStore_prt->setStartNetworkTime();
+ }
_outputQueue->enqueue(http_request);
}

View File

@ -1,32 +0,0 @@
--- pegasus/src/Pegasus/Common/CIMStatusCode.h.obz5049 2006-02-17 14:30:37.000000000 -0500
+++ pegasus/src/Pegasus/Common/CIMStatusCode.h 2006-05-31 11:43:33.000000000 -0400
@@ -37,7 +37,6 @@
#include <Pegasus/Common/Config.h>
#include <Pegasus/Common/Linkage.h>
#include <Pegasus/Common/ContentLanguageList.h>
-#include <Pegasus/Common/MessageLoader.h>
PEGASUS_NAMESPACE_BEGIN
--- pegasus/src/Pegasus/Common/Exception.h.obz5049 2006-01-30 11:17:03.000000000 -0500
+++ pegasus/src/Pegasus/Common/Exception.h 2006-05-31 11:44:46.000000000 -0400
@@ -37,7 +37,9 @@
#include <Pegasus/Common/Config.h>
#include <Pegasus/Common/String.h>
#include <Pegasus/Common/CIMStatusCode.h>
+#ifdef PEGASUS_USE_EXPERIMENTAL_INTERFACES
#include <Pegasus/Common/MessageLoader.h>
+#endif
#include <Pegasus/Common/Linkage.h>
#include <Pegasus/Common/ContentLanguageList.h>
--- pegasus/src/Pegasus/Common/CIMStatusCode.cpp.obz5049 2006-01-30 11:16:47.000000000 -0500
+++ pegasus/src/Pegasus/Common/CIMStatusCode.cpp 2006-05-31 11:43:52.000000000 -0400
@@ -38,6 +38,7 @@
//%/////////////////////////////////////////////////////////////////////////////
#include "CIMStatusCode.h"
+#include <Pegasus/Common/MessageLoader.h>
PEGASUS_NAMESPACE_BEGIN

File diff suppressed because it is too large Load Diff

View File

@ -1,240 +0,0 @@
--- pegasus/src/Pegasus/Common/HTTPConnection.cpp.obz5053 2006-05-31 14:05:14.000000000 -0400
+++ pegasus/src/Pegasus/Common/HTTPConnection.cpp 2006-05-31 14:05:14.000000000 -0400
@@ -1036,20 +1036,23 @@
// reserve space for entire non-chunked message
if (_contentLength > 0)
{
- try
- {
- Uint32 capacity = (Uint32)(_contentLength + _contentOffset + 1);
- _incomingBuffer.reserveCapacity(capacity);
- data = (char *)_incomingBuffer.getData();
- data[capacity-1] = 0;
- }catch(const PEGASUS_STD(bad_alloc)&)
- {
- _throwEventFailure(HTTP_STATUS_REQUEST_TOO_LARGE,
- "Error reserving space for non-chunked message");
- }catch(...)
- {
- _throwEventFailure(httpStatusInternal, "unexpected exception");
- }
+ try
+ {
+ Uint32 capacity = (Uint32)(_contentLength +
+ _contentOffset + 1);
+ _incomingBuffer.reserveCapacity(capacity);
+ data = (char *)_incomingBuffer.getData();
+ data[capacity-1] = 0;
+ }
+ catch(const PEGASUS_STD(bad_alloc)&)
+ {
+ _throwEventFailure(HTTP_STATUS_REQUEST_TOO_LARGE,
+ "Error reserving space for non-chunked message");
+ }
+ catch(...)
+ {
+ _throwEventFailure(httpStatusInternal, "unexpected exception");
+ }
}
break;
--- pegasus/src/Pegasus/Common/tests/Array/Array.cpp.obz5053 2006-01-30 11:17:15.000000000 -0500
+++ pegasus/src/Pegasus/Common/tests/Array/Array.cpp 2006-05-31 14:34:16.000000000 -0400
@@ -189,7 +189,7 @@
{
Array<Uint32> arr(0xffff0000);
}
- catch (const NullPointer&)
+ catch (const PEGASUS_STD(bad_alloc)&)
{
exceptionCaught = true;
}
@@ -201,7 +201,7 @@
{
Array<Uint32> arr(0xffff0000, 100);
}
- catch (const NullPointer&)
+ catch (const PEGASUS_STD(bad_alloc)&)
{
exceptionCaught = true;
}
@@ -214,7 +214,7 @@
Uint32 myInt = 50;
Array<Uint32> arr(&myInt, 0xffff0000);
}
- catch (const NullPointer&)
+ catch (const PEGASUS_STD(bad_alloc)&)
{
exceptionCaught = true;
}
@@ -224,7 +224,16 @@
{
Array<Uint32> arr(128);
PEGASUS_TEST_ASSERT(arr.getCapacity() == 128);
- arr.reserveCapacity(0xffff0000);
+ exceptionCaught = false;
+ try
+ {
+ arr.reserveCapacity(0xffff0000);
+ }
+ catch (const PEGASUS_STD(bad_alloc)&)
+ {
+ exceptionCaught = true;
+ }
+ PEGASUS_TEST_ASSERT(exceptionCaught);
PEGASUS_TEST_ASSERT(arr.getCapacity() == 128);
}
}
--- pegasus/src/Pegasus/Common/InternalException.h.obz5053 2006-01-30 11:17:04.000000000 -0500
+++ pegasus/src/Pegasus/Common/InternalException.h 2006-05-31 14:05:14.000000000 -0400
@@ -619,6 +619,18 @@
#define PEGASUS_CIM_EXCEPTION_L(CODE, MSG_PARMS) \
TraceableCIMException(CODE, MSG_PARMS, String(__FILE__), __LINE__)
+/** Macro to prevent overflow of a signed int value when said value is
+ * doubled. If String/Array/Buffer size is greater than 0x3FFFFFFF, then
+ * something is suspect, throw bad_alloc exception.
+ */
+#define PEGASUS_CHECK_CAPACITY_OVERFLOW(capacity) \
+ do \
+ { \
+ if (capacity > 0x3FFFFFFF) \
+ throw PEGASUS_STD(bad_alloc)(); \
+ } \
+ while (0)
+
PEGASUS_NAMESPACE_END
#endif /* Pegasus_InternalException_h */
--- pegasus/src/Pegasus/Common/ArrayRep.h.obz5053 2006-01-30 11:16:46.000000000 -0500
+++ pegasus/src/Pegasus/Common/ArrayRep.h 2006-05-31 14:05:14.000000000 -0400
@@ -145,9 +145,10 @@
}
// Test for Uint32 overflow in the memory allocation size
+ // throw a bad_alloc exception if overflow would occur.
if (initialCapacity > (Uint32(0xffffffff)-sizeof(ArrayRep<T>))/sizeof(T))
{
- return 0;
+ throw PEGASUS_STD(bad_alloc)();
}
// Create object:
--- pegasus/src/Pegasus/Common/ArrayImpl.h.obz5053 2006-01-30 11:16:45.000000000 -0500
+++ pegasus/src/Pegasus/Common/ArrayImpl.h 2006-05-31 14:05:14.000000000 -0400
@@ -77,10 +77,8 @@
{
_rep = ArrayRep<PEGASUS_ARRAY_T>::alloc(size);
- if (!_rep)
- {
- throw NullPointer();
- }
+ // ArrayRep<PEGASUS_ARRAY_T>::alloc() throws a bad_alloc exception if
+ // storage could not be obtained.
InitializeRaw(Array_data, size);
}
@@ -92,10 +90,8 @@
{
_rep = ArrayRep<PEGASUS_ARRAY_T>::alloc(size);
- if (!_rep)
- {
- throw NullPointer();
- }
+ // ArrayRep<PEGASUS_ARRAY_T>::alloc() throws a bad_alloc exception if
+ // storage could not be obtained.
PEGASUS_ARRAY_T* data = Array_data;
@@ -114,10 +110,8 @@
{
_rep = ArrayRep<PEGASUS_ARRAY_T>::alloc(size);
- if (!_rep)
- {
- throw NullPointer();
- }
+ // ArrayRep<PEGASUS_ARRAY_T>::alloc() throws a bad_alloc exception if
+ // storage could not be obtained.
CopyToRaw(Array_data, items, size);
}
@@ -176,8 +170,8 @@
ArrayRep<PEGASUS_ARRAY_T>* rep =
ArrayRep<PEGASUS_ARRAY_T>::alloc(capacity);
- if (!rep)
- return;
+ // ArrayRep<PEGASUS_ARRAY_T>::alloc() throws a bad_alloc exception if
+ // storage could not be obtained.
rep->size = Array_size;
--- pegasus/src/Pegasus/Common/Buffer.cpp.obz5053 2006-05-31 14:05:14.000000000 -0400
+++ pegasus/src/Pegasus/Common/Buffer.cpp 2006-05-31 14:05:14.000000000 -0400
@@ -43,16 +43,13 @@
static const size_t MIN_CAPACITY = 2048;
-#ifndef PEGASUS_CHECK_FOR_OVERFLOW
-#define PEGASUS_CHECK_FOR_OVERFLOW(capacity) { if (capacity > 0x3FFFFFFF) throw PEGASUS_STD(bad_alloc)(); }
-#endif
-
static Uint32 _next_pow_2(Uint32 x)
{
if (x < MIN_CAPACITY)
return MIN_CAPACITY;
- PEGASUS_CHECK_FOR_OVERFLOW(x);
+ // Check for potential overflow in x.
+ PEGASUS_CHECK_CAPACITY_OVERFLOW(x);
x--;
x |= (x >> 1);
@@ -139,7 +136,8 @@
}
else
{
- PEGASUS_CHECK_FOR_OVERFLOW(_rep->cap);
+ // Check for potential overflow.
+ PEGASUS_CHECK_CAPACITY_OVERFLOW(_rep->cap);
_rep = _reallocate(_rep, _rep->cap ? (2 * _rep->cap) : MIN_CAPACITY);
}
}
--- pegasus/src/Pegasus/Common/String.cpp.obz5053 2006-05-31 14:05:14.000000000 -0400
+++ pegasus/src/Pegasus/Common/String.cpp 2006-05-31 14:05:14.000000000 -0400
@@ -51,10 +51,6 @@
#include <unicode/uchar.h>
#endif
-#ifndef PEGASUS_CHECK_FOR_OVERFLOW
-#define PEGASUS_CHECK_FOR_OVERFLOW(capacity) { if (capacity > 0x3FFFFFFF) throw PEGASUS_STD(bad_alloc)(); }
-#endif
-
PEGASUS_NAMESPACE_BEGIN
//==============================================================================
@@ -170,7 +166,8 @@
{
#ifndef PEGASUS_STRING_NO_THROW
- PEGASUS_CHECK_FOR_OVERFLOW(x);
+ // Check for potential overflow in x
+ PEGASUS_CHECK_CAPACITY_OVERFLOW(x);
#endif
@@ -547,8 +544,9 @@
inline StringRep* StringRep::alloc(size_t cap)
{
#ifndef PEGASUS_STRING_NO_THROW
-
- PEGASUS_CHECK_FOR_OVERFLOW(cap);
+
+ // Check for potential overflow in cap
+ PEGASUS_CHECK_CAPACITY_OVERFLOW(cap);
#endif

View File

@ -1,11 +0,0 @@
--- pegasus/src/Pegasus/Common/XmlWriter.cpp.obz5059 2006-01-30 11:17:08.000000000 -0500
+++ pegasus/src/Pegasus/Common/XmlWriter.cpp 2006-05-31 13:03:27.000000000 -0400
@@ -250,7 +250,7 @@
static const int _isSpecialChar7[] =
{
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,
- 0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
};

View File

@ -1,58 +0,0 @@
--- pegasus/src/Pegasus/ProviderManager2/OOPProviderManagerRouter.cpp.obz5072 2006-05-31 12:18:40.000000000 -0400
+++ pegasus/src/Pegasus/ProviderManager2/OOPProviderManagerRouter.cpp 2006-05-31 13:09:56.000000000 -0400
@@ -97,18 +97,25 @@
{
public:
OutstandingRequestEntry(
- String messageId_,
+ String originalMessageId_,
CIMRequestMessage* requestMessage_,
CIMResponseMessage*& responseMessage_,
Semaphore* responseReady_)
- : messageId(messageId_),
+ : originalMessageId(originalMessageId_),
requestMessage(requestMessage_),
responseMessage(responseMessage_),
responseReady(responseReady_)
{
}
- String messageId;
+ /**
+ A unique value is substituted as the request messageId attribute to
+ allow responses to be definitively correllated with requests.
+ The original messageId value is stored here to avoid a race condition
+ between the processing of a response chunk and the resetting of the
+ original messageId in the request message.
+ */
+ String originalMessageId;
CIMRequestMessage* requestMessage;
CIMResponseMessage*& responseMessage;
Semaphore* responseReady;
@@ -931,7 +938,7 @@
i != 0; i++)
{
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2,
- String("Completing messageId \"") + i.value()->messageId +
+ String("Completing messageId \"") + i.key() +
"\" with a null response.");
i.value()->responseMessage = response;
i.value()->responseReady->signal();
@@ -1048,7 +1055,7 @@
//
Semaphore waitSemaphore(0);
OutstandingRequestEntry outstandingRequestEntry(
- uniqueMessageId, request, response, &waitSemaphore);
+ originalMessageId, request, response, &waitSemaphore);
//
// Lock the Provider Agent Container while initializing the
@@ -1343,7 +1350,7 @@
// Put the original message ID into the response
response->messageId =
- _outstandingRequestEntry->requestMessage->messageId;
+ _outstandingRequestEntry->originalMessageId;
// Call the response chunk callback to process the chunk
_responseChunkCallback(

View File

@ -1,144 +0,0 @@
--- pegasus/src/Pegasus/Repository/AssocClassTable.cpp.obz5073 2006-01-30 11:18:20.000000000 -0500
+++ pegasus/src/Pegasus/Repository/AssocClassTable.cpp 2006-06-12 13:13:18.000000000 -0400
@@ -218,10 +218,6 @@
fields.append(toClassName.getString());
fields.append(toPropertyName.getString());
- for (Uint16 x=0; x<fields.size();x++)
- {
- fields[x].toLower();
- }
_PutRecord(os, fields);
@@ -263,10 +259,6 @@
fields.append(toClassName.getString());
fields.append(toPropertyName.getString());
- for (Uint16 x=0; x<fields.size();x++)
- {
- fields[x].toLower();
- }
_PutRecord(os, fields);
@@ -428,11 +420,6 @@
// For each line in the associations table:
while (_GetRecord(is, fields))
{
- // The cache key is always expected to be in lowercase
- // While new association records are added in lowercase,
- // the following line is required for compatibility
- // with old repositories.
- fields[FROM_CLASS_NAME_INDEX].toLower();
cache->addRecord(fields[FROM_CLASS_NAME_INDEX],
fields);
}
@@ -483,7 +470,6 @@
for (Uint16 idx=0; idx < classList.size(); idx++)
{
String fromClassName = classList[idx].getString();
- fromClassName.toLower();
if (cache->getAssocClassEntry(fromClassName, records))
{
for (Uint16 rx=0; rx <records.size(); rx++)
--- pegasus/src/Pegasus/Repository/AssocClassCache.h.obz5073 2006-01-30 11:18:20.000000000 -0500
+++ pegasus/src/Pegasus/Repository/AssocClassCache.h 2006-06-12 13:13:18.000000000 -0400
@@ -63,24 +63,24 @@
/** Retrieve an entry for an association class through direct
* access via the from class name.
*/
- Boolean getAssocClassEntry(const String& lowerCaseFromClassName,
+ Boolean getAssocClassEntry(const String& fromClassName,
Array< Array<String> >& entryList);
/** Add a new entry to the association cache.
*/
- Boolean addRecord(const String& lowerCaseFromClassName,
+ Boolean addRecord(const String& fromClassName,
Array<String> assocClassEntry);
/** Remove an entry from the association cache specified by the given
* association class name.
*/
- Boolean removeEntry(const String& lowerCaseFromClassName);
+ Boolean removeEntry(const String& fromClassName);
/** Remove an association record from the association cache specified by the given
* from class name and association name.
*/
- Boolean removeRecord(const String& lowerCaseFromClassName,
- const String& lowerCaseAssocClassName);
+ Boolean removeRecord(const String& fromClassName,
+ const String& assocClassName);
/** Check if the cache is loaded with objects already.
*/
--- pegasus/src/Pegasus/Repository/AssocClassCache.cpp.obz5073 2006-01-30 11:18:20.000000000 -0500
+++ pegasus/src/Pegasus/Repository/AssocClassCache.cpp 2006-06-12 13:13:18.000000000 -0400
@@ -86,9 +86,12 @@
/** Retrieve the list of entries for a from class through direct
* access via the from class name.
*/
-Boolean AssocClassCache::getAssocClassEntry(const String& lowerCaseFromClassName,
+Boolean AssocClassCache::getAssocClassEntry(const String& fromClassName,
Array< Array<String> >& entryList)
{
+ String lowerCaseFromClassName = fromClassName;
+ lowerCaseFromClassName.toLower();
+
return _assocClassCache->lookup(lowerCaseFromClassName,entryList);
}
@@ -97,10 +100,12 @@
* the new entry is appended to the old entry. Otherwise a new entry
* is added to the cache.
*/
-Boolean AssocClassCache::addRecord(const String& lowerCaseFromClassName,
+Boolean AssocClassCache::addRecord(const String& fromClassName,
Array<String> assocClassRecord)
{
Array< Array<String> > oldAssocClassEntryList;
+ String lowerCaseFromClassName = fromClassName;
+ lowerCaseFromClassName.toLower();
if (_assocClassCache->lookup(lowerCaseFromClassName, oldAssocClassEntryList))
{
@@ -115,18 +120,24 @@
/** Remove an entry from the association cache specified by the given
* from class name.
*/
-Boolean AssocClassCache::removeEntry(const String& lowerCaseFromClassName)
+Boolean AssocClassCache::removeEntry(const String& fromClassName)
{
+ String lowerCaseFromClassName = fromClassName;
+ lowerCaseFromClassName.toLower();
+
return _assocClassCache->remove(lowerCaseFromClassName);
}
/** Remove an association record from the association cache specified by the given
* from class name and association name.
*/
-Boolean AssocClassCache::removeRecord(const String& lowerCaseFromClassName,
- const String& lowerCaseAssocClassName)
+Boolean AssocClassCache::removeRecord(const String& fromClassName,
+ const String& assocClassName)
{
Array< Array<String> > oldAssocClassEntryList;
+ String lowerCaseFromClassName = fromClassName;
+ lowerCaseFromClassName.toLower();
+
if (_assocClassCache->lookup(lowerCaseFromClassName, oldAssocClassEntryList))
{
for (Uint16 idx=0; idx < oldAssocClassEntryList.size(); idx++ )
@@ -134,7 +145,8 @@
// The first entry in each record is the association class
// name. Find the record for the association class and remove
// it from the cache entry.
- if (oldAssocClassEntryList[idx][ASSOC_CLASS_NAME_INDEX] == lowerCaseAssocClassName)
+ if (String::equalNoCase(oldAssocClassEntryList[idx][ASSOC_CLASS_NAME_INDEX],
+ assocClassName))
{
_assocClassCache->remove(lowerCaseFromClassName);
if (oldAssocClassEntryList.size() > 1)

View File

@ -1,751 +0,0 @@
--- pegasus/src/Pegasus/Common/CIMMessage.cpp.obz5083 2006-05-31 12:18:40.000000000 -0400
+++ pegasus/src/Pegasus/Common/CIMMessage.cpp 2006-05-31 13:13:35.000000000 -0400
@@ -46,7 +46,7 @@
PEGASUS_NAMESPACE_BEGIN
-void CIMResponseMessage::syncAttributes(CIMRequestMessage* request)
+void CIMResponseMessage::syncAttributes(const CIMRequestMessage* request)
{
// Propagate request attributes to the response, as necessary
setKey(request->getKey());
@@ -56,7 +56,7 @@
setCloseConnect(request->getCloseConnect());
}
-CIMResponseMessage* CIMGetClassRequestMessage::buildResponse()
+CIMResponseMessage* CIMGetClassRequestMessage::buildResponse() const
{
AutoPtr<CIMGetClassResponseMessage> response(
new CIMGetClassResponseMessage(
@@ -68,7 +68,7 @@
return response.release();
}
-CIMResponseMessage* CIMGetInstanceRequestMessage::buildResponse()
+CIMResponseMessage* CIMGetInstanceRequestMessage::buildResponse() const
{
AutoPtr<CIMGetInstanceResponseMessage> response(
new CIMGetInstanceResponseMessage(
@@ -80,7 +80,7 @@
return response.release();
}
-CIMResponseMessage* CIMExportIndicationRequestMessage::buildResponse()
+CIMResponseMessage* CIMExportIndicationRequestMessage::buildResponse() const
{
AutoPtr<CIMExportIndicationResponseMessage> response(
new CIMExportIndicationResponseMessage(
@@ -91,7 +91,7 @@
return response.release();
}
-CIMResponseMessage* CIMDeleteClassRequestMessage::buildResponse()
+CIMResponseMessage* CIMDeleteClassRequestMessage::buildResponse() const
{
AutoPtr<CIMDeleteClassResponseMessage> response(
new CIMDeleteClassResponseMessage(
@@ -102,7 +102,7 @@
return response.release();
}
-CIMResponseMessage* CIMDeleteInstanceRequestMessage::buildResponse()
+CIMResponseMessage* CIMDeleteInstanceRequestMessage::buildResponse() const
{
AutoPtr<CIMDeleteInstanceResponseMessage> response(
new CIMDeleteInstanceResponseMessage(
@@ -113,7 +113,7 @@
return response.release();
}
-CIMResponseMessage* CIMCreateClassRequestMessage::buildResponse()
+CIMResponseMessage* CIMCreateClassRequestMessage::buildResponse() const
{
AutoPtr<CIMCreateClassResponseMessage> response(
new CIMCreateClassResponseMessage(
@@ -124,7 +124,7 @@
return response.release();
}
-CIMResponseMessage* CIMCreateInstanceRequestMessage::buildResponse()
+CIMResponseMessage* CIMCreateInstanceRequestMessage::buildResponse() const
{
AutoPtr<CIMCreateInstanceResponseMessage> response(
new CIMCreateInstanceResponseMessage(
@@ -136,7 +136,7 @@
return response.release();
}
-CIMResponseMessage* CIMModifyClassRequestMessage::buildResponse()
+CIMResponseMessage* CIMModifyClassRequestMessage::buildResponse() const
{
AutoPtr<CIMModifyClassResponseMessage> response(
new CIMModifyClassResponseMessage(
@@ -147,7 +147,7 @@
return response.release();
}
-CIMResponseMessage* CIMModifyInstanceRequestMessage::buildResponse()
+CIMResponseMessage* CIMModifyInstanceRequestMessage::buildResponse() const
{
AutoPtr<CIMModifyInstanceResponseMessage> response(
new CIMModifyInstanceResponseMessage(
@@ -158,7 +158,7 @@
return response.release();
}
-CIMResponseMessage* CIMEnumerateClassesRequestMessage::buildResponse()
+CIMResponseMessage* CIMEnumerateClassesRequestMessage::buildResponse() const
{
AutoPtr<CIMEnumerateClassesResponseMessage> response(
new CIMEnumerateClassesResponseMessage(
@@ -170,7 +170,7 @@
return response.release();
}
-CIMResponseMessage* CIMEnumerateClassNamesRequestMessage::buildResponse()
+CIMResponseMessage* CIMEnumerateClassNamesRequestMessage::buildResponse() const
{
AutoPtr<CIMEnumerateClassNamesResponseMessage> response(
new CIMEnumerateClassNamesResponseMessage(
@@ -182,7 +182,7 @@
return response.release();
}
-CIMResponseMessage* CIMEnumerateInstancesRequestMessage::buildResponse()
+CIMResponseMessage* CIMEnumerateInstancesRequestMessage::buildResponse() const
{
AutoPtr<CIMEnumerateInstancesResponseMessage> response(
new CIMEnumerateInstancesResponseMessage(
@@ -194,7 +194,7 @@
return response.release();
}
-CIMResponseMessage* CIMEnumerateInstanceNamesRequestMessage::buildResponse()
+CIMResponseMessage* CIMEnumerateInstanceNamesRequestMessage::buildResponse() const
{
AutoPtr<CIMEnumerateInstanceNamesResponseMessage> response(
new CIMEnumerateInstanceNamesResponseMessage(
@@ -206,7 +206,7 @@
return response.release();
}
-CIMResponseMessage* CIMExecQueryRequestMessage::buildResponse()
+CIMResponseMessage* CIMExecQueryRequestMessage::buildResponse() const
{
AutoPtr<CIMExecQueryResponseMessage> response(
new CIMExecQueryResponseMessage(
@@ -218,7 +218,7 @@
return response.release();
}
-CIMResponseMessage* CIMAssociatorsRequestMessage::buildResponse()
+CIMResponseMessage* CIMAssociatorsRequestMessage::buildResponse() const
{
AutoPtr<CIMAssociatorsResponseMessage> response(
new CIMAssociatorsResponseMessage(
@@ -230,7 +230,7 @@
return response.release();
}
-CIMResponseMessage* CIMAssociatorNamesRequestMessage::buildResponse()
+CIMResponseMessage* CIMAssociatorNamesRequestMessage::buildResponse() const
{
AutoPtr<CIMAssociatorNamesResponseMessage> response(
new CIMAssociatorNamesResponseMessage(
@@ -242,7 +242,7 @@
return response.release();
}
-CIMResponseMessage* CIMReferencesRequestMessage::buildResponse()
+CIMResponseMessage* CIMReferencesRequestMessage::buildResponse() const
{
AutoPtr<CIMReferencesResponseMessage> response(
new CIMReferencesResponseMessage(
@@ -254,7 +254,7 @@
return response.release();
}
-CIMResponseMessage* CIMReferenceNamesRequestMessage::buildResponse()
+CIMResponseMessage* CIMReferenceNamesRequestMessage::buildResponse() const
{
AutoPtr<CIMReferenceNamesResponseMessage> response(
new CIMReferenceNamesResponseMessage(
@@ -266,7 +266,7 @@
return response.release();
}
-CIMResponseMessage* CIMGetPropertyRequestMessage::buildResponse()
+CIMResponseMessage* CIMGetPropertyRequestMessage::buildResponse() const
{
AutoPtr<CIMGetPropertyResponseMessage> response(
new CIMGetPropertyResponseMessage(
@@ -278,7 +278,7 @@
return response.release();
}
-CIMResponseMessage* CIMSetPropertyRequestMessage::buildResponse()
+CIMResponseMessage* CIMSetPropertyRequestMessage::buildResponse() const
{
AutoPtr<CIMSetPropertyResponseMessage> response(
new CIMSetPropertyResponseMessage(
@@ -289,7 +289,7 @@
return response.release();
}
-CIMResponseMessage* CIMGetQualifierRequestMessage::buildResponse()
+CIMResponseMessage* CIMGetQualifierRequestMessage::buildResponse() const
{
AutoPtr<CIMGetQualifierResponseMessage> response(
new CIMGetQualifierResponseMessage(
@@ -301,7 +301,7 @@
return response.release();
}
-CIMResponseMessage* CIMSetQualifierRequestMessage::buildResponse()
+CIMResponseMessage* CIMSetQualifierRequestMessage::buildResponse() const
{
AutoPtr<CIMSetQualifierResponseMessage> response(
new CIMSetQualifierResponseMessage(
@@ -312,7 +312,7 @@
return response.release();
}
-CIMResponseMessage* CIMDeleteQualifierRequestMessage::buildResponse()
+CIMResponseMessage* CIMDeleteQualifierRequestMessage::buildResponse() const
{
AutoPtr<CIMDeleteQualifierResponseMessage> response(
new CIMDeleteQualifierResponseMessage(
@@ -323,7 +323,7 @@
return response.release();
}
-CIMResponseMessage* CIMEnumerateQualifiersRequestMessage::buildResponse()
+CIMResponseMessage* CIMEnumerateQualifiersRequestMessage::buildResponse() const
{
AutoPtr<CIMEnumerateQualifiersResponseMessage> response(
new CIMEnumerateQualifiersResponseMessage(
@@ -335,7 +335,7 @@
return response.release();
}
-CIMResponseMessage* CIMInvokeMethodRequestMessage::buildResponse()
+CIMResponseMessage* CIMInvokeMethodRequestMessage::buildResponse() const
{
AutoPtr<CIMInvokeMethodResponseMessage> response(
new CIMInvokeMethodResponseMessage(
@@ -349,7 +349,7 @@
return response.release();
}
-CIMResponseMessage* CIMProcessIndicationRequestMessage::buildResponse()
+CIMResponseMessage* CIMProcessIndicationRequestMessage::buildResponse() const
{
AutoPtr<CIMProcessIndicationResponseMessage> response(
new CIMProcessIndicationResponseMessage(
@@ -360,7 +360,7 @@
return response.release();
}
-CIMResponseMessage* CIMNotifyProviderRegistrationRequestMessage::buildResponse()
+CIMResponseMessage* CIMNotifyProviderRegistrationRequestMessage::buildResponse() const
{
AutoPtr<CIMNotifyProviderRegistrationResponseMessage> response(
new CIMNotifyProviderRegistrationResponseMessage(
@@ -371,7 +371,7 @@
return response.release();
}
-CIMResponseMessage* CIMNotifyProviderTerminationRequestMessage::buildResponse()
+CIMResponseMessage* CIMNotifyProviderTerminationRequestMessage::buildResponse() const
{
AutoPtr<CIMNotifyProviderTerminationResponseMessage> response(
new CIMNotifyProviderTerminationResponseMessage(
@@ -382,7 +382,7 @@
return response.release();
}
-CIMResponseMessage* CIMHandleIndicationRequestMessage::buildResponse()
+CIMResponseMessage* CIMHandleIndicationRequestMessage::buildResponse() const
{
AutoPtr<CIMHandleIndicationResponseMessage> response(
new CIMHandleIndicationResponseMessage(
@@ -393,7 +393,7 @@
return response.release();
}
-CIMResponseMessage* CIMCreateSubscriptionRequestMessage::buildResponse()
+CIMResponseMessage* CIMCreateSubscriptionRequestMessage::buildResponse() const
{
AutoPtr<CIMCreateSubscriptionResponseMessage> response(
new CIMCreateSubscriptionResponseMessage(
@@ -404,7 +404,7 @@
return response.release();
}
-CIMResponseMessage* CIMModifySubscriptionRequestMessage::buildResponse()
+CIMResponseMessage* CIMModifySubscriptionRequestMessage::buildResponse() const
{
AutoPtr<CIMModifySubscriptionResponseMessage> response(
new CIMModifySubscriptionResponseMessage(
@@ -415,7 +415,7 @@
return response.release();
}
-CIMResponseMessage* CIMDeleteSubscriptionRequestMessage::buildResponse()
+CIMResponseMessage* CIMDeleteSubscriptionRequestMessage::buildResponse() const
{
AutoPtr<CIMDeleteSubscriptionResponseMessage> response(
new CIMDeleteSubscriptionResponseMessage(
@@ -427,7 +427,7 @@
}
CIMResponseMessage*
- CIMSubscriptionInitCompleteRequestMessage::buildResponse()
+ CIMSubscriptionInitCompleteRequestMessage::buildResponse() const
{
AutoPtr<CIMSubscriptionInitCompleteResponseMessage> response(
new CIMSubscriptionInitCompleteResponseMessage(
@@ -438,7 +438,7 @@
return response.release();
}
-CIMResponseMessage* CIMDisableModuleRequestMessage::buildResponse()
+CIMResponseMessage* CIMDisableModuleRequestMessage::buildResponse() const
{
AutoPtr<CIMDisableModuleResponseMessage> response(
new CIMDisableModuleResponseMessage(
@@ -450,7 +450,7 @@
return response.release();
}
-CIMResponseMessage* CIMEnableModuleRequestMessage::buildResponse()
+CIMResponseMessage* CIMEnableModuleRequestMessage::buildResponse() const
{
AutoPtr<CIMEnableModuleResponseMessage> response(
new CIMEnableModuleResponseMessage(
@@ -462,7 +462,7 @@
return response.release();
}
-CIMResponseMessage* CIMNotifyProviderEnableRequestMessage::buildResponse()
+CIMResponseMessage* CIMNotifyProviderEnableRequestMessage::buildResponse() const
{
AutoPtr<CIMNotifyProviderEnableResponseMessage> response(
new CIMNotifyProviderEnableResponseMessage(
@@ -484,7 +484,7 @@
return response.release();
}
-CIMResponseMessage* CIMStopAllProvidersRequestMessage::buildResponse()
+CIMResponseMessage* CIMStopAllProvidersRequestMessage::buildResponse() const
{
AutoPtr<CIMStopAllProvidersResponseMessage> response(
new CIMStopAllProvidersResponseMessage(
@@ -495,7 +495,7 @@
return response.release();
}
-CIMResponseMessage* CIMInitializeProviderRequestMessage::buildResponse()
+CIMResponseMessage* CIMInitializeProviderRequestMessage::buildResponse() const
{
AutoPtr<CIMInitializeProviderResponseMessage> response(
new CIMInitializeProviderResponseMessage(
@@ -506,7 +506,7 @@
return response.release();
}
-CIMResponseMessage* CIMInitializeProviderAgentRequestMessage::buildResponse()
+CIMResponseMessage* CIMInitializeProviderAgentRequestMessage::buildResponse() const
{
AutoPtr<CIMInitializeProviderAgentResponseMessage> response(
new CIMInitializeProviderAgentResponseMessage(
@@ -517,7 +517,7 @@
return response.release();
}
-CIMResponseMessage* CIMNotifyConfigChangeRequestMessage::buildResponse()
+CIMResponseMessage* CIMNotifyConfigChangeRequestMessage::buildResponse() const
{
AutoPtr<CIMNotifyConfigChangeResponseMessage> response(
new CIMNotifyConfigChangeResponseMessage(
--- pegasus/src/Pegasus/Common/CIMMessage.h.obz5083 2006-05-31 12:18:40.000000000 -0400
+++ pegasus/src/Pegasus/Common/CIMMessage.h 2006-05-31 13:13:35.000000000 -0400
@@ -124,7 +124,7 @@
CIMRequestMessage(
Uint32 type_, const String& messageId_, const QueueIdStack& queueIds_);
- virtual CIMResponseMessage* buildResponse() = 0;
+ virtual CIMResponseMessage* buildResponse() const = 0;
#ifdef PEGASUS_DEBUG
virtual void print(PEGASUS_STD(ostream)& os, Boolean printHeader) const
@@ -160,7 +160,7 @@
const CIMException& cimException_,
const QueueIdStack& queueIds_);
- void syncAttributes(CIMRequestMessage* request);
+ void syncAttributes(const CIMRequestMessage* request);
QueueIdStack queueIds;
CIMException cimException;
@@ -228,7 +228,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
Boolean localOnly;
Boolean includeQualifiers;
@@ -266,7 +266,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMObjectPath instanceName;
Boolean localOnly;
@@ -297,7 +297,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
String destinationPath;
CIMInstance indicationInstance;
@@ -325,7 +325,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
String authType;
String userName;
@@ -351,7 +351,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMObjectPath instanceName;
String authType;
@@ -379,7 +379,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMClass newClass;
String authType;
@@ -406,7 +406,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMInstance newInstance;
String authType;
@@ -434,7 +434,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMClass modifiedClass;
String authType;
@@ -465,7 +465,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMInstance modifiedInstance;
Boolean includeQualifiers;
@@ -502,7 +502,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
Boolean deepInheritance;
Boolean localOnly;
@@ -534,7 +534,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
Boolean deepInheritance;
String authType;
@@ -570,7 +570,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
Boolean deepInheritance;
Boolean localOnly;
@@ -623,7 +623,7 @@
}
#endif
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
String authType;
String userName;
@@ -652,7 +652,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
String queryLanguage;
String query;
@@ -695,7 +695,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMObjectPath objectName;
CIMName assocClass;
@@ -738,7 +738,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMObjectPath objectName;
CIMName assocClass;
@@ -780,7 +780,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMObjectPath objectName;
CIMName resultClass;
@@ -817,7 +817,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMObjectPath objectName;
CIMName resultClass;
@@ -848,7 +848,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMObjectPath instanceName;
CIMName propertyName;
@@ -880,7 +880,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMObjectPath instanceName;
CIMName propertyName;
@@ -910,7 +910,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMName qualifierName;
String authType;
@@ -938,7 +938,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMQualifierDecl qualifierDeclaration;
String authType;
@@ -966,7 +966,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMName qualifierName;
String authType;
@@ -992,7 +992,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
String authType;
String userName;
@@ -1023,7 +1023,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMObjectPath instanceName;
CIMName methodName;
@@ -1052,7 +1052,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMNamespaceName nameSpace;
CIMInstance indicationInstance;
@@ -1090,7 +1090,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMName className;
Array <CIMNamespaceName> newNamespaces;
@@ -1115,7 +1115,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
Array <CIMInstance> providers;
};
@@ -1144,7 +1144,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMNamespaceName nameSpace;
CIMInstance handlerInstance;
@@ -1184,7 +1184,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMNamespaceName nameSpace;
CIMInstance subscriptionInstance;
@@ -1226,7 +1226,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMNamespaceName nameSpace;
CIMInstance subscriptionInstance;
@@ -1262,7 +1262,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMNamespaceName nameSpace;
CIMInstance subscriptionInstance;
@@ -1286,7 +1286,7 @@
{
}
- virtual CIMResponseMessage * buildResponse ();
+ virtual CIMResponseMessage* buildResponse() const;
};
class PEGASUS_COMMON_LINKAGE CIMDisableModuleRequestMessage
@@ -1315,7 +1315,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMInstance providerModule;
Array<CIMInstance> providers;
@@ -1345,7 +1345,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
CIMInstance providerModule;
String authType;
@@ -1368,7 +1368,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
Array <CIMInstance> capInstances;
};
@@ -1411,7 +1411,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
};
class PEGASUS_COMMON_LINKAGE CIMInitializeProviderRequestMessage
@@ -1428,7 +1428,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
};
// Used to pass initialization data to an Out-of-Process Provider Agent process
@@ -1454,7 +1454,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
String pegasusHome;
Array<Pair<String, String> > configProperties;
@@ -1482,7 +1482,7 @@
{
}
- virtual CIMResponseMessage* buildResponse();
+ virtual CIMResponseMessage* buildResponse() const;
String propertyName;
String newPropertyValue;

View File

@ -1,46 +0,0 @@
--- pegasus/src/Pegasus/ProviderManager2/CMPI/CMPIProvider.cpp.obz5090 2006-01-30 11:18:04.000000000 -0500
+++ pegasus/src/Pegasus/ProviderManager2/CMPI/CMPIProvider.cpp 2006-07-07 18:20:48.000000000 -0400
@@ -297,19 +297,6 @@
*/
void CMPIProvider::_terminate(Boolean terminating)
{
- {
- WriteLock writeLock (broker.rwsemClassCache);
-
- if (broker.clsCache) {
- ClassCache::Iterator i=broker.clsCache->start();
- for (; i; i++) {
- delete i.value();
- }
- delete broker.clsCache;
- broker.clsCache=NULL;
- }
- }
-
const OperationContext opc;
CMPIStatus rc={CMPI_RC_OK,NULL};
CMPI_ContextOnStack eCtx(opc);
@@ -350,8 +337,23 @@
if (rc.rc==CMPI_RC_ERR_NOT_SUPPORTED) noUnload=true;
if ((rc.rc == CMPI_RC_DO_NOT_UNLOAD) || (rc.rc==CMPI_RC_NEVER_UNLOAD)) noUnload =true;
}
+
if (noUnload == false)
{
+ // Cleanup the class cache
+ {
+ WriteLock writeLock (broker.rwsemClassCache);
+
+ if (broker.clsCache) {
+ ClassCache::Iterator i=broker.clsCache->start();
+ for (; i; i++) {
+ delete i.value();
+ }
+ delete broker.clsCache;
+ broker.clsCache=NULL;
+ }
+ }
+
// Check the thread list to make sure the thread has been de-allocated
if (_threadWatchList.size() != 0)
{

View File

@ -1,67 +0,0 @@
--- pegasus/SetConfig_EnvVar.obz5115 2006-01-30 11:16:16.000000000 -0500
+++ pegasus/SetConfig_EnvVar 2006-06-07 15:06:18.000000000 -0400
@@ -1,34 +1,34 @@
#!/usr/bin/perl
-//%2006////////////////////////////////////////////////////////////////////////
-//
-// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
-// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
-// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
-// IBM Corp.; EMC Corporation, The Open Group.
-// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
-// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
-// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
-// EMC Corporation; VERITAS Software Corporation; The Open Group.
-// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
-// EMC Corporation; Symantec Corporation; The Open Group.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to
-// deal in the Software without restriction, including without limitation the
-// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-// sell copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
-// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
-// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
-// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//================================================================================
+#//%2006////////////////////////////////////////////////////////////////////////
+#//
+#// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
+#// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
+#// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
+#// IBM Corp.; EMC Corporation, The Open Group.
+#// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
+#// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
+#// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
+#// EMC Corporation; VERITAS Software Corporation; The Open Group.
+#// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
+#// EMC Corporation; Symantec Corporation; The Open Group.
+#//
+#// Permission is hereby granted, free of charge, to any person obtaining a copy
+#// of this software and associated documentation files (the "Software"), to
+#// deal in the Software without restriction, including without limitation the
+#// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+#// sell copies of the Software, and to permit persons to whom the Software is
+#// furnished to do so, subject to the following conditions:
+#//
+#// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
+#// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
+#// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+#// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+#// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+#// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+#// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+#// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#//
+#//================================================================================
use strict;
#use warnings;
my $HELP_FILE = "SetConfig_EnvVar.help";

View File

@ -1,29 +0,0 @@
--- pegasus/src/Pegasus/Provider/CMPI/CmpiImpl.cpp.obz5119 2006-01-30 11:18:00.000000000 -0500
+++ pegasus/src/Pegasus/Provider/CMPI/CmpiImpl.cpp 2006-06-07 15:13:01.000000000 -0400
@@ -1197,7 +1197,7 @@
else
throw CmpiStatus(rc.rc,name->charPtr());
}
- if (name) *name=*(new CmpiString(s));
+ if (name) *name= CmpiString(s);
return d;
};
@@ -1386,7 +1386,7 @@
CMPIString *s;
d._data=getEnc()->ft->getKeyAt(getEnc(),(int)pos,&s,&rc);
if (rc.rc!=CMPI_RC_OK) throw CmpiStatus(rc);
- if (name) *name=*(new CmpiString(s));
+ if (name) *name= CmpiString(s);
return d;
}
@@ -1710,7 +1710,7 @@
else
throw CmpiStatus(rc.rc,name->charPtr());
}
- if (name) *name=*(new CmpiString(s));
+ if (name) *name= CmpiString(s);
return d;
}

View File

@ -1,67 +0,0 @@
--- pegasus/src/Pegasus/Server/CIMOperationRequestDispatcher.cpp.obz5180 2006-07-07 18:19:11.000000000 -0400
+++ pegasus/src/Pegasus/Server/CIMOperationRequestDispatcher.cpp 2006-07-07 19:03:51.000000000 -0400
@@ -421,7 +421,18 @@
CIMResponseMessage *&response)
{
static const char func[] = "CIMOperationRequestDispatcher::_enqueueResponse";
- AutoMutex autoMut(_mut);
+ // Obtain the _enqueueResponseMutex mutex for this chunked request.
+ // This mutex is used to serialize chunked responses from all incoming
+ // provider threads. It is imperative that the sequencing done by the
+ // resequenceResponse() method and the writing of the chunked response
+ // to the connection socket (done as a synchronous enqueue at the end
+ // of this method) are atomic to ensure that the chunk that is marked
+ // as isComplete for the overall response is indeed the last chunk
+ // returned to the client. See PEP 140 for details.
+ // This mutex was moved into the OperationAggregate class as part of
+ // bug 4629 because we only need to serialize on a per-request basis.
+ // This prevents serializing independent requests on separate connections.
+ AutoMutex autoMut(poA->_enqueueResponseMutex);
Boolean isComplete = false;
try
@@ -550,13 +561,6 @@
CIMException(CIM_ERR_FAILED, String(failMsg));
}
- if (isComplete == true)
- {
- // also deletes the copied request attached to it
- delete poA;
- poA = 0;
- }
-
// after sending, the response has been deleted externally
response = 0;
@@ -1785,6 +1789,12 @@
// the ENTIRE response to the request.
isComplete = service->_enqueueResponse(poA, response);
+ if (isComplete)
+ {
+ // also deletes the copied request attached to it
+ delete poA;
+ poA = 0;
+ }
PEG_METHOD_EXIT();
}
--- pegasus/src/Pegasus/Server/CIMOperationRequestDispatcher.h.obz5180 2006-02-10 14:13:47.000000000 -0500
+++ pegasus/src/Pegasus/Server/CIMOperationRequestDispatcher.h 2006-07-07 19:00:43.000000000 -0400
@@ -159,6 +159,7 @@
*/
class PEGASUS_SERVER_LINKAGE OperationAggregate
{
+ friend class CIMOperationRequestDispatcher;
public:
/* Operation Aggregate constructor. Builds an aggregate
object.
@@ -227,6 +228,7 @@
Array<CIMResponseMessage*> _responseList;
Mutex _appendResponseMutex;
+ Mutex _enqueueResponseMutex;
CIMRequestMessage* _request;
Uint32 _totalIssued;
Uint32 _magicNumber;

View File

@ -1,29 +0,0 @@
--- pegasus/mak/objects-unix.mak.parallel_make 2006-01-30 11:16:23.000000000 -0500
+++ pegasus/mak/objects-unix.mak 2006-04-10 16:58:30.000000000 -0400
@@ -50,7 +50,7 @@
ifeq ($(_NO_TMP_O), yes)
-$(OBJ_DIR)/%.o: %.cpp $(ERROR)
+$(OBJ_DIR)/%.o: $(OBJ_DIR)/target %.cpp $(ERROR)
$(CXX) -c -o $@ $(FLAGS) $(EXTRA_CXX_FLAGS) $(LOCAL_DEFINES) $(DEFINES) $(SYS_INCLUDES) $(INCLUDES) $*.cpp
@ $(TOUCH) $@
@ $(ECHO)
@@ -64,7 +64,7 @@
endif
ifeq ($(_NO_TMP_O), yes)
-$(OBJ_DIR)/%.o: %.c $(ERROR)
+$(OBJ_DIR)/%.o: $(OBJ_DIR)/target %.c $(ERROR)
$(CC) -c -o $@ $(FLAGS) $(EXTRA_C_FLAGS) $(LOCAL_DEFINES) $(DEFINES) $(SYS_INCLUDES) $(INCLUDES) $*.c
@ $(TOUCH) $@
@ $(ECHO)
@@ -78,7 +78,7 @@
endif
ifeq ($(_NO_TMP_O), yes)
-$(OBJ_DIR)/%.o: %.s $(ERROR)
+$(OBJ_DIR)/%.o: $(OBJ_DIR)/target %.s $(ERROR)
$(CC) -c -o $@ $(FLAGS) $(EXTRA_C_FLAGS) $(LOCAL_DEFINES) $(DEFINES) $(SYS_INCLUDES) $(INCLUDES) $*.s
@ $(TOUCH) $@
@ $(ECHO)

View File

@ -1,11 +0,0 @@
--- pegasus/src/Pegasus/Common/System.cpp.PATH_MAX 2006-06-09 13:36:52.000000000 -0400
+++ pegasus/src/Pegasus/Common/System.cpp 2006-07-27 14:11:16.000000000 -0400
@@ -185,7 +185,7 @@
char *System::extract_file_path(const char *fullpath, char *dirname)
{
char *p;
- char buff[4096];
+ char buff[PATH_MAX];
if (fullpath == NULL)
{
dirname[0] = '\0';

View File

@ -1,11 +0,0 @@
--- pegasus/src/Pegasus/Config/FixedPropertyTableLinux.h.cmpi-provider-lib 2006-06-13 14:00:13.000000000 -0400
+++ pegasus/src/Pegasus/Config/FixedPropertyTableLinux.h 2006-07-27 14:01:23.000000000 -0400
@@ -65,7 +65,7 @@
{"crlStore", PEGASUS_SSL_SERVER_CRL},
#endif
{"repositoryDir", PEGASUS_REPOSITORY_DIR},
- {"providerDir", PEGASUS_PROVIDER_LIB_DIR ":/usr/" PEGASUS_ARCH_LIB "/cmpi"},
+ {"providerDir", PEGASUS_PROVIDER_LIB_DIR ":" PEGASUS_DEST_LIB_DIR "/cmpi"},
#else /* PEGASUS_OVERRIDE_DEFAULT_RELEASE_DIRS */
{"traceFilePath", "/var/opt/tog-pegasus/cache/trace/cimserver.trc"},
#if !defined(PEGASUS_USE_SYSLOGS)

View File

@ -1,439 +0,0 @@
--- pegasus/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp.local-or-remote-auth 2006-03-10 18:18:37.000000000 -0500
+++ pegasus/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp 2006-07-27 14:04:18.000000000 -0400
@@ -384,6 +384,9 @@
}
}
+ // Let Authenticators know whether this user is Local or Remote:
+ httpMessage->authInfo->setRemoteUser( httpMessage->fromRemoteHost );
+
//
// Handle authentication:
//
--- pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp.local-or-remote-auth 2006-01-30 11:18:28.000000000 -0500
+++ pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp 2006-07-27 14:04:18.000000000 -0400
@@ -48,6 +48,8 @@
#include <prot.h>
#endif
+#include <syslog.h>
+
#if defined (PEGASUS_USE_PAM_STANDALONE_PROC)
#include <Pegasus/Common/Logger.h>
#include <Pegasus/Common/IPC.h>
@@ -131,7 +133,8 @@
Boolean PAMBasicAuthenticator::authenticate(
const String& userName,
- const String& password)
+ const String& password,
+ Boolean isRemoteUser)
{
PEG_METHOD_ENTER(TRC_AUTHENTICATION,
"PAMBasicAuthenticator::authenticate()");
@@ -139,7 +142,7 @@
Boolean authenticated;
#if !defined(PEGASUS_USE_PAM_STANDALONE_PROC)
- authenticated = _authenticateByPAM(userName, password);
+ authenticated = _authenticateByPAM(userName, password, isRemoteUser);
#else
//
// Mutex to Serialize Authentication calls.
@@ -147,8 +150,9 @@
Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
"Authentication Mutex lock.");
AutoMutex lock(_authSerializeMutex);
- authenticated = _pamBasicAuthenticatorStandAlone.authenticate(
- userName, password);
+ authenticated =
+ _pamBasicAuthenticatorStandAlone->authenticate(userName,
+ password);
#endif
PEG_METHOD_EXIT();
@@ -157,7 +161,8 @@
Boolean PAMBasicAuthenticator::_authenticateByPAM(
const String& userName,
- const String& password)
+ const String& password,
+ Boolean isRemoteUser)
{
PEG_METHOD_ENTER(TRC_AUTHENTICATION,
"PAMBasicAuthenticator::_authenticateByPAM()");
@@ -167,6 +172,7 @@
pam_handle_t *phandle;
char *name;
APP_DATA mydata;
+ int retcode;
//
// Store the password for PAM authentication
@@ -180,13 +186,31 @@
// Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
// "PAMBasicAuthenticator::_authenticateByPAM() - userName = %s; userPassword = %s",
// (const char *)userName.getCString(), (const char *)password.getCString());
+
+ // NOTE: if any pam call should log anything, our syslog socket will be redirected
+ // to the AUTH facility, so we need to redirect it back after each pam call.
//
//Call pam_start since you need to before making any other PAM calls
//
- if ( ( pam_start(service,
+
+ if ( (retcode = pam_start(service,
(const char *)userName.getCString(), &pconv, &phandle) ) != PAM_SUCCESS )
{
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_start failed: %s", pam_strerror(phandle, retcode));
+ PEG_METHOD_EXIT();
+ return (authenticated);
+ }
+
+
+ if ( (retcode = pam_set_item(phandle, PAM_TTY, isRemoteUser ? "wbemNetwork" : "wbemLocal")) != PAM_SUCCESS )
+ {
+ pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_set_item(PAM_TTY=wbem) failed: %s", pam_strerror(phandle, retcode));
PEG_METHOD_EXIT();
return (authenticated);
}
@@ -194,7 +218,7 @@
//
//Call pam_authenticate to authenticate the user
//
- if ( ( pam_authenticate(phandle, 0) ) == PAM_SUCCESS )
+ if ( ( retcode = pam_authenticate(phandle, 0) ) == PAM_SUCCESS )
{
Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
"pam_authenticate successful.");
@@ -203,22 +227,40 @@
//checking for password and account expiration, as well as verifying access
//hour restrictions.
//
- if ( ( pam_acct_mgmt(phandle, 0) ) == PAM_SUCCESS )
+
+ if ( ( retcode = pam_acct_mgmt(phandle, 0) ) == PAM_SUCCESS )
{
Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
"pam_acct_mgmt successful.");
authenticated = true;
- }
+ }else
+ {
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog(LOG_ERR, "pam_acct_mgmt failed: %s",pam_strerror(phandle, retcode));
+ }
+ }else
+ {
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog(LOG_ERR, "pam_authenticate failed: %s",pam_strerror(phandle, retcode));
}
-
//
//Call pam_end to end our PAM work
//
pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
- PEG_METHOD_EXIT();
+ if ( ! authenticated )
+ syslog(LOG_ERR, "PAM authentication failed for %s user: %s",
+ isRemoteUser ? "remote" : "local",
+ (const char*)userName.getCString()
+ );
+ PEG_METHOD_EXIT();
return (authenticated);
+
}
Boolean PAMBasicAuthenticator::validateUser(const String& userName)
@@ -233,6 +275,7 @@
pam_handle_t *phandle;
char *name;
APP_DATA mydata;
+ int retcode;
const char *service = "wbem";
pconv.conv = PAMBasicAuthenticator::pamValidateUserCallback;
@@ -241,21 +284,43 @@
//
// Call pam_start since you need to before making any other PAM calls
//
- if ( pam_start(service,
- (const char *)userName.getCString(), &pconv, &phandle) != PAM_SUCCESS)
- {
+ if ( (retcode =
+ pam_start(service,(const char *)userName.getCString(), &pconv, &phandle)
+ ) != PAM_SUCCESS
+ )
+ {
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_start() failed: %s", pam_strerror(phandle, retcode));
PEG_METHOD_EXIT();
return (authenticated);
}
+ if ( (retcode = pam_set_item(phandle, PAM_TTY, "wbemLocal")) != PAM_SUCCESS )
+ {
+ pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_set_item(PAM_TTY=wbemLocal) failed: %s", pam_strerror(phandle, retcode));
+ PEG_METHOD_EXIT();
+ return (authenticated);
+ }
//
// Call pam_acct_mgmt, to check if the user account is valid. This includes
// checking for account expiration, as well as verifying access
// hour restrictions.
//
- if ( pam_acct_mgmt(phandle, 0) == PAM_SUCCESS )
- {
+ if ( (retcode = pam_acct_mgmt(phandle, 0)) == PAM_SUCCESS )
+ {
authenticated = true;
+ }else
+ {
+ pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_acct_mgmt() failed: %s", pam_strerror(phandle, retcode));
+ PEG_METHOD_EXIT();
+ return (authenticated);
}
//
@@ -263,6 +328,9 @@
//
pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+
#else
//
// Mutex to Serialize Authentication calls.
--- pegasus/src/Pegasus/Security/Authentication/BasicAuthenticator.h.local-or-remote-auth 2006-01-30 11:18:28.000000000 -0500
+++ pegasus/src/Pegasus/Security/Authentication/BasicAuthenticator.h 2006-07-27 14:04:18.000000000 -0400
@@ -67,7 +67,8 @@
*/
virtual Boolean authenticate(
const String& userName,
- const String& password) = 0;
+ const String& password,
+ Boolean isRemoteUser) = 0;
/** Construct and return the HTTP Basic authentication challenge header
@return A string containing the authentication challenge header.
--- pegasus/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp.local-or-remote-auth 2006-07-11 13:25:28.000000000 -0400
+++ pegasus/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp 2006-07-27 14:07:01.000000000 -0400
@@ -163,7 +163,7 @@
return false;
}
- authenticated = _basicAuthenticator->authenticate(userName, password);
+ authenticated = _basicAuthenticator->authenticate(userName, password, authInfo->isRemoteUser());
if (authenticated)
{
--- pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp.local-or-remote-auth 2006-01-30 11:18:28.000000000 -0500
+++ pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp 2006-07-27 14:04:18.000000000 -0400
@@ -92,7 +92,8 @@
Boolean PAMBasicAuthenticator::authenticate(
const String& userName,
- const String& password)
+ const String& password,
+ Boolean isRemoteUser)
{
PEG_METHOD_ENTER(TRC_AUTHENTICATION,
"PAMBasicAuthenticator::authenticate()");
--- pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h.local-or-remote-auth 2006-01-30 11:18:28.000000000 -0500
+++ pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h 2006-07-27 14:04:18.000000000 -0400
@@ -73,7 +73,8 @@
*/
Boolean authenticate(
const String& userName,
- const String& password);
+ const String& password,
+ Boolean isRemoteUser);
/** Verify PAM account management for the requesting user.
@param userName String containing the user name
@@ -102,7 +103,8 @@
Boolean _authenticateByPAM(
const String& userName,
- const String& password);
+ const String& password,
+ Boolean isRemoteUser);
void _createPAMStandalone();
@@ -158,7 +160,8 @@
*/
Boolean authenticate(
const String& userName,
- const String& password);
+ const String& password,
+ Boolean isRemoteUser);
/** Verify whether the user is valid.
@param userName String containing the user name
@@ -220,7 +223,8 @@
Boolean _authenticateByPAM(
const String& userName,
- const String& password);
+ const String& password,
+ Boolean isRemoteUser);
#if defined(PEGASUS_USE_PAM_STANDALONE_PROC)
PAMBasicAuthenticatorStandAlone _pamBasicAuthenticatorStandAlone;
--- pegasus/src/Pegasus/Common/AuthenticationInfoRep.cpp.local-or-remote-auth 2006-01-30 11:16:46.000000000 -0500
+++ pegasus/src/Pegasus/Common/AuthenticationInfoRep.cpp 2006-07-27 14:04:18.000000000 -0400
@@ -57,7 +57,8 @@
_privileged(false),
_authType(String::EMPTY),
_authStatus(NEW_REQUEST),
- _exportConnection(false)
+ _exportConnection(false),
+ _remoteUser(true)
{
PEG_METHOD_ENTER(
TRC_AUTHENTICATION, "AuthenticationInfoRep::AuthenticationInfoRep");
@@ -180,5 +181,14 @@
PEG_METHOD_EXIT();
}
+void AuthenticationInfoRep::setRemoteUser(Boolean remoteUser)
+{
+ PEG_METHOD_ENTER(TRC_AUTHENTICATION,
+ "AuthenticationInfoRep::setRemoteUser");
+
+ _remoteUser = remoteUser;
+
+ PEG_METHOD_EXIT();
+}
PEGASUS_NAMESPACE_END
--- pegasus/src/Pegasus/Common/HTTPMessage.cpp.local-or-remote-auth 2006-01-30 11:17:04.000000000 -0500
+++ pegasus/src/Pegasus/Common/HTTPMessage.cpp 2006-07-27 14:04:18.000000000 -0400
@@ -119,7 +119,8 @@
queueId(queueId_),
authInfo(0),
acceptLanguagesDecoded(false),
- contentLanguagesDecoded(false)
+ contentLanguagesDecoded(false),
+ fromRemoteHost(true)
{
if (cimException_)
cimException = *cimException_;
--- pegasus/src/Pegasus/Common/AuthenticationInfo.h.local-or-remote-auth 2006-01-30 11:16:46.000000000 -0500
+++ pegasus/src/Pegasus/Common/AuthenticationInfo.h 2006-07-27 14:04:18.000000000 -0400
@@ -331,6 +331,22 @@
_rep->setClientCertificateChain(clientCertificate);
}
+ /** Indicate whether the user is Remote
+ */
+ Boolean isRemoteUser() const
+ {
+ _checkRep();
+ return _rep->isRemoteUser();
+ }
+
+ /** Set the Remote User flag
+ */
+ void setRemoteUser(Boolean remoteUser)
+ {
+ _checkRep();
+ _rep->setRemoteUser(remoteUser);
+ }
+
private:
AuthenticationInfo(AuthenticationInfoRep* rep) : _rep(rep)
--- pegasus/src/Pegasus/Common/HTTPConnection.cpp.local-or-remote-auth 2006-05-12 14:28:20.000000000 -0400
+++ pegasus/src/Pegasus/Common/HTTPConnection.cpp 2006-07-27 14:04:18.000000000 -0400
@@ -1841,6 +1841,30 @@
"_requestCount = %d", _requestCount.get());
message->dest = _outputMessageQueue->getQueueId();
// SendForget(message);
+
+ // Allow authenticators to differentiate Remote and Local users:
+ struct sockaddr_in sin_peer, sin_svr; // don't need to worry about IPv6 yet ...
+ socklen_t slen1=sizeof(struct sockaddr_in), slen2=sizeof(struct sockaddr_in);
+ uint32_t sock = _socket.get()->getSocket() ;
+ memset(&sin_peer,'\0',slen1);
+ memset(&sin_svr, '\0',slen2);
+ if ( ( ::getpeername( sock, (struct sockaddr*)&sin_peer, &slen1) == 0 )
+ ||( ::getsockname( sock, (struct sockaddr*)&sin_svr, &slen2) == 0 )
+ )
+ {
+ if( sin_peer.sin_family == AF_INET )
+ {
+ if( ((ntohl( sin_peer.sin_addr.s_addr ) >> 24) & 0xff) == 127 )
+ // message was sent FROM localhost interface
+ message->fromRemoteHost = false;
+ }
+ if( sin_svr.sin_family == AF_INET )
+ {
+ if( ((ntohl( sin_svr.sin_addr.s_addr ) >> 24) & 0xff) == 127 )
+ // message was sent TO localhost interface
+ message->fromRemoteHost = false;
+ }
+ }
//
// Set the entry status to BUSY.
--- pegasus/src/Pegasus/Common/AuthenticationInfoRep.h.local-or-remote-auth 2006-01-30 11:16:46.000000000 -0500
+++ pegasus/src/Pegasus/Common/AuthenticationInfoRep.h 2006-07-27 14:04:18.000000000 -0400
@@ -143,6 +143,14 @@
void setExportConnection(Boolean exportConnection);
+ Boolean isRemoteUser() const
+ {
+ return _remoteUser;
+ }
+
+ void setRemoteUser(Boolean remoteUser);
+
+
//PEP187
Array<SSLCertificateInfo*> getClientCertificateChain()
{
@@ -173,7 +181,8 @@
#endif
Boolean _exportConnection;
- Array<SSLCertificateInfo*> _clientCertificate;
+ Array<SSLCertificateInfo*> _clientCertificate;
+ Boolean _remoteUser;
};
PEGASUS_NAMESPACE_END
--- pegasus/src/Pegasus/Common/HTTPMessage.h.local-or-remote-auth 2006-01-30 11:17:04.000000000 -0500
+++ pegasus/src/Pegasus/Common/HTTPMessage.h 2006-07-27 14:04:18.000000000 -0400
@@ -80,7 +80,8 @@
ContentLanguageList contentLanguages;
Boolean acceptLanguagesDecoded;
Boolean contentLanguagesDecoded;
- CIMException cimException;
+ Boolean fromRemoteHost;
+ CIMException cimException;
void parse(
String& startLine,

View File

@ -0,0 +1,81 @@
--- pegasus-2.6.1/rpm/tog-pegasus.rc_old 2007-08-30 09:30:13.000000000 +0200
+++ pegasus-2.6.1/rpm/tog-pegasus.rc 2007-08-30 10:21:42.000000000 +0200
@@ -5,17 +5,22 @@
# processname: cimserver
# pidfile: /var/run/tog-pegasus/cimserver.pid
#
+
+### BEGIN INIT INFO
+# Provides: lsb-pegasus
+# Required-Start: $syslog $network
+# Should-Start: $time
+# Required-Stop: $syslog
+# Default-Start: 3 5
+# Default-Stop: 0 1 2 6
+# Description: init script for Pegasus CIMServer
+### END INIT INFO
+
CIMSERVER_BIN=/usr/sbin/cimserver
prog=cimserver
LOCKFILE=/var/lock/subsys/tog-pegasus
. /etc/rc.d/init.d/functions
-if [ ! -x $CIMSERVER_BIN ]; then
- echo -n "tog-pegasus $1: $CIMSERVER_BIN not found or not executable.";
- failure;
- exit 1;
-fi;
-
[ -e /etc/sysconfig/tog-pegasus ] && . /etc/sysconfig/tog-pegasus;
PEGASUS_SSL_CONF_FILE=${PEGASUS_SSL_CONF_FILE:=/etc/Pegasus/ssl.cnf}
@@ -26,7 +31,26 @@
RETVAL=0
case "$1" in
- start)
+ start)
+ pid=`pidofproc $CIMSERVER_BIN`
+ RETVAL=$?
+ if [ "$RETVAL" -eq 0 ]; then
+ echo "tog-pegasus $1: $CIMSERVER_BIN is already running";
+ exit 0;
+ fi;
+
+ if [ ! -e $CIMSERVER_BIN ]; then
+ echo "tog-pegasus $1: $CIMSERVER_BIN not found";
+ failure;
+ exit 5;
+ fi;
+
+ if [ ! -x $CIMSERVER_BIN ]; then
+ echo "tog-pegasus $1: $CIMSERVER_BIN not executable";
+ failure;
+ exit 4;
+ fi;
+
if [ ! -e ${PEGASUS_SSL_CONF_FILE} ] || [ ! -e ${PEGASUS_SSL_CERT_FILE} ] ||
[ ! -e ${PEGASUS_SSL_KEY_FILE} ] || [ ! -e ${PEGASUS_SSL_TRUSTSTORE} ]; then
if [ -x /usr/share/Pegasus/scripts/genOpenPegasusSSLCerts ]; then
@@ -71,10 +95,10 @@
RETVAL=$?
if [ "$RETVAL" -eq 0 ]; then
echo -n $"CIM server ($pid) is running";
- success;
+ RETVAL=0
else
echo -n $"CIM server is not running";
- failure;
+ RETVAL=3
fi
echo
;;
@@ -103,7 +127,7 @@
;;
*)
echo "Usage: $0 {start|stop|status|restart|reload|force-reload|try-restart}"
- exit 1
+ RETVAL=3
esac
exit $RETVAL

View File

@ -1,7 +1,7 @@
diff -Nur pegasus.orig/src/Pegasus/Common/AuthenticationInfo.h pegasus/src/Pegasus/Common/AuthenticationInfo.h
--- pegasus.orig/src/Pegasus/Common/AuthenticationInfo.h 2006-11-10 12:14:57.000000000 -0600
+++ pegasus/src/Pegasus/Common/AuthenticationInfo.h 2007-02-23 00:34:45.000000000 -0600
@@ -352,6 +352,22 @@
diff -Nur pegasus-2.6.1.orig/src/Pegasus/Common/AuthenticationInfo.h pegasus-2.6.1/src/Pegasus/Common/AuthenticationInfo.h
--- pegasus-2.6.1.orig/src/Pegasus/Common/AuthenticationInfo.h 2007-03-23 10:36:53.000000000 -0700
+++ pegasus-2.6.1/src/Pegasus/Common/AuthenticationInfo.h 2007-08-17 11:18:15.000000000 -0700
@@ -343,6 +343,22 @@
return _rep->getRemotePrivilegedUserAccessChecked();
}
@ -24,20 +24,20 @@ diff -Nur pegasus.orig/src/Pegasus/Common/AuthenticationInfo.h pegasus/src/Pegas
private:
AuthenticationInfo(AuthenticationInfoRep* rep) : _rep(rep)
diff -Nur pegasus.orig/src/Pegasus/Common/AuthenticationInfoRep.cpp pegasus/src/Pegasus/Common/AuthenticationInfoRep.cpp
--- pegasus.orig/src/Pegasus/Common/AuthenticationInfoRep.cpp 2006-11-08 06:41:27.000000000 -0600
+++ pegasus/src/Pegasus/Common/AuthenticationInfoRep.cpp 2007-02-23 00:34:45.000000000 -0600
diff -Nur pegasus-2.6.1.orig/src/Pegasus/Common/AuthenticationInfoRep.cpp pegasus-2.6.1/src/Pegasus/Common/AuthenticationInfoRep.cpp
--- pegasus-2.6.1.orig/src/Pegasus/Common/AuthenticationInfoRep.cpp 2007-03-23 10:36:53.000000000 -0700
+++ pegasus-2.6.1/src/Pegasus/Common/AuthenticationInfoRep.cpp 2007-08-17 11:26:28.000000000 -0700
@@ -51,7 +51,8 @@
_privileged(false),
_authType(String::EMPTY),
_authStatus(NEW_REQUEST),
_connectionAuthenticated(false),
- _wasRemotePrivilegedUserAccessChecked(false)
+ _wasRemotePrivilegedUserAccessChecked(false),
+ _remoteUser(true)
{
PEG_METHOD_ENTER(
TRC_AUTHENTICATION, "AuthenticationInfoRep::AuthenticationInfoRep");
@@ -59,6 +60,16 @@
@@ -59,6 +60,15 @@
PEG_METHOD_EXIT();
}
@ -50,14 +50,13 @@ diff -Nur pegasus.orig/src/Pegasus/Common/AuthenticationInfoRep.cpp pegasus/src/
+
+ PEG_METHOD_EXIT();
+}
+
AuthenticationInfoRep::~AuthenticationInfoRep()
{
diff -Nur pegasus.orig/src/Pegasus/Common/AuthenticationInfoRep.h pegasus/src/Pegasus/Common/AuthenticationInfoRep.h
--- pegasus.orig/src/Pegasus/Common/AuthenticationInfoRep.h 2006-11-10 12:14:57.000000000 -0600
+++ pegasus/src/Pegasus/Common/AuthenticationInfoRep.h 2007-02-23 00:34:45.000000000 -0600
@@ -142,6 +142,13 @@
diff -Nur pegasus-2.6.1.orig/src/Pegasus/Common/AuthenticationInfoRep.h pegasus-2.6.1/src/Pegasus/Common/AuthenticationInfoRep.h
--- pegasus-2.6.1.orig/src/Pegasus/Common/AuthenticationInfoRep.h 2007-03-23 10:36:53.000000000 -0700
+++ pegasus-2.6.1/src/Pegasus/Common/AuthenticationInfoRep.h 2007-08-17 11:18:15.000000000 -0700
@@ -136,6 +136,13 @@
void setSecurityAssociation();
#endif
@ -71,7 +70,7 @@ diff -Nur pegasus.orig/src/Pegasus/Common/AuthenticationInfoRep.h pegasus/src/Pe
//PEP187
Array<SSLCertificateInfo*> getClientCertificateChain()
{
@@ -186,6 +193,7 @@
@@ -180,6 +187,7 @@
Boolean _wasRemotePrivilegedUserAccessChecked;
Array<SSLCertificateInfo*> _clientCertificate;
@ -79,12 +78,12 @@ diff -Nur pegasus.orig/src/Pegasus/Common/AuthenticationInfoRep.h pegasus/src/Pe
};
PEGASUS_NAMESPACE_END
diff -Nur pegasus.orig/src/Pegasus/Common/HTTPConnection.cpp pegasus/src/Pegasus/Common/HTTPConnection.cpp
--- pegasus.orig/src/Pegasus/Common/HTTPConnection.cpp 2006-12-01 15:03:27.000000000 -0600
+++ pegasus/src/Pegasus/Common/HTTPConnection.cpp 2007-02-23 00:34:45.000000000 -0600
@@ -2030,6 +2030,30 @@
message->dest = _outputMessageQueue->getQueueId();
// SendForget(message);
diff -Nur pegasus-2.6.1.orig/src/Pegasus/Common/HTTPConnection.cpp pegasus-2.6.1/src/Pegasus/Common/HTTPConnection.cpp
--- pegasus-2.6.1.orig/src/Pegasus/Common/HTTPConnection.cpp 2007-08-02 01:08:02.000000000 -0700
+++ pegasus-2.6.1/src/Pegasus/Common/HTTPConnection.cpp 2007-08-17 11:18:15.000000000 -0700
@@ -2042,6 +2042,30 @@
#endif
}
+ // Allow authenticators to differentiate Remote and Local users:
+ struct sockaddr_in sin_peer, sin_svr; // don't need to worry about IPv6 yet ...
@ -111,12 +110,12 @@ diff -Nur pegasus.orig/src/Pegasus/Common/HTTPConnection.cpp pegasus/src/Pegasus
+ }
+
//
// Set the entry status to BUSY.
// increment request count
//
diff -Nur pegasus.orig/src/Pegasus/Common/HTTPMessage.cpp pegasus/src/Pegasus/Common/HTTPMessage.cpp
--- pegasus.orig/src/Pegasus/Common/HTTPMessage.cpp 2006-11-08 16:24:00.000000000 -0600
+++ pegasus/src/Pegasus/Common/HTTPMessage.cpp 2007-02-23 00:34:45.000000000 -0600
@@ -109,7 +109,8 @@
diff -Nur pegasus-2.6.1.orig/src/Pegasus/Common/HTTPMessage.cpp pegasus-2.6.1/src/Pegasus/Common/HTTPMessage.cpp
--- pegasus-2.6.1.orig/src/Pegasus/Common/HTTPMessage.cpp 2007-05-25 10:39:01.000000000 -0700
+++ pegasus-2.6.1/src/Pegasus/Common/HTTPMessage.cpp 2007-08-17 11:18:15.000000000 -0700
@@ -120,7 +120,8 @@
queueId(queueId_),
authInfo(0),
acceptLanguagesDecoded(false),
@ -126,9 +125,9 @@ diff -Nur pegasus.orig/src/Pegasus/Common/HTTPMessage.cpp pegasus/src/Pegasus/Co
{
if (cimException_)
cimException = *cimException_;
diff -Nur pegasus.orig/src/Pegasus/Common/HTTPMessage.h pegasus/src/Pegasus/Common/HTTPMessage.h
--- pegasus.orig/src/Pegasus/Common/HTTPMessage.h 2006-11-10 12:14:58.000000000 -0600
+++ pegasus/src/Pegasus/Common/HTTPMessage.h 2007-02-23 00:34:45.000000000 -0600
diff -Nur pegasus-2.6.1.orig/src/Pegasus/Common/HTTPMessage.h pegasus-2.6.1/src/Pegasus/Common/HTTPMessage.h
--- pegasus-2.6.1.orig/src/Pegasus/Common/HTTPMessage.h 2007-05-25 10:39:01.000000000 -0700
+++ pegasus-2.6.1/src/Pegasus/Common/HTTPMessage.h 2007-08-17 11:18:15.000000000 -0700
@@ -75,6 +75,7 @@
ContentLanguageList contentLanguages;
Boolean acceptLanguagesDecoded;
@ -137,9 +136,9 @@ diff -Nur pegasus.orig/src/Pegasus/Common/HTTPMessage.h pegasus/src/Pegasus/Comm
CIMException cimException;
void parse(
diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp pegasus/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp
--- pegasus.orig/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp 2006-11-08 06:41:28.000000000 -0600
+++ pegasus/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp 2007-02-23 00:34:45.000000000 -0600
diff -Nur pegasus-2.6.1.orig/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp pegasus-2.6.1/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp
--- pegasus-2.6.1.orig/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp 2006-11-08 04:41:28.000000000 -0800
+++ pegasus-2.6.1/src/Pegasus/Security/Authentication/BasicAuthenticationHandler.cpp 2007-08-17 11:18:15.000000000 -0700
@@ -139,7 +139,7 @@
}
authInfo->setRemotePrivilegedUserAccessChecked();
@ -149,9 +148,9 @@ diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/BasicAuthenticationHa
// Log audit message.
PEG_AUDIT_LOG(logBasicAuthentication(
diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/BasicAuthenticator.h pegasus/src/Pegasus/Security/Authentication/BasicAuthenticator.h
--- pegasus.orig/src/Pegasus/Security/Authentication/BasicAuthenticator.h 2006-01-30 10:18:28.000000000 -0600
+++ pegasus/src/Pegasus/Security/Authentication/BasicAuthenticator.h 2007-02-23 00:34:45.000000000 -0600
diff -Nur pegasus-2.6.1.orig/src/Pegasus/Security/Authentication/BasicAuthenticator.h pegasus-2.6.1/src/Pegasus/Security/Authentication/BasicAuthenticator.h
--- pegasus-2.6.1.orig/src/Pegasus/Security/Authentication/BasicAuthenticator.h 2006-01-30 08:18:28.000000000 -0800
+++ pegasus-2.6.1/src/Pegasus/Security/Authentication/BasicAuthenticator.h 2007-08-17 11:18:15.000000000 -0700
@@ -67,7 +67,8 @@
*/
virtual Boolean authenticate(
@ -162,9 +161,9 @@ diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/BasicAuthenticator.h
/** Construct and return the HTTP Basic authentication challenge header
@return A string containing the authentication challenge header.
diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h
--- pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h 2006-08-09 16:13:04.000000000 -0500
+++ pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h 2007-02-23 00:36:06.000000000 -0600
diff -Nur pegasus-2.6.1.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h pegasus-2.6.1/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h
--- pegasus-2.6.1.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h 2006-08-09 14:13:04.000000000 -0700
+++ pegasus-2.6.1/src/Pegasus/Security/Authentication/PAMBasicAuthenticator.h 2007-08-17 11:18:15.000000000 -0700
@@ -73,7 +73,8 @@
*/
Boolean authenticate(
@ -205,9 +204,9 @@ diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticator
#if defined(PEGASUS_USE_PAM_STANDALONE_PROC)
PAMBasicAuthenticatorStandAlone _pamBasicAuthenticatorStandAlone;
diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp
--- pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp 2006-01-30 10:18:28.000000000 -0600
+++ pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp 2007-02-23 00:34:45.000000000 -0600
diff -Nur pegasus-2.6.1.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp pegasus-2.6.1/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp
--- pegasus-2.6.1.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp 2006-01-30 08:18:28.000000000 -0800
+++ pegasus-2.6.1/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorStub.cpp 2007-08-17 11:18:15.000000000 -0700
@@ -92,7 +92,8 @@
Boolean PAMBasicAuthenticator::authenticate(
@ -218,9 +217,9 @@ diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticator
{
PEG_METHOD_ENTER(TRC_AUTHENTICATION,
"PAMBasicAuthenticator::authenticate()");
diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp
--- pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp 2006-11-01 16:42:47.000000000 -0600
+++ pegasus/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp 2007-02-23 00:34:45.000000000 -0600
diff -Nur pegasus-2.6.1.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp pegasus-2.6.1/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp
--- pegasus-2.6.1.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp 2007-04-04 04:04:52.000000000 -0700
+++ pegasus-2.6.1/src/Pegasus/Security/Authentication/PAMBasicAuthenticatorUnix.cpp 2007-08-17 11:38:49.000000000 -0700
@@ -48,6 +48,8 @@
#include <prot.h>
#endif
@ -249,15 +248,6 @@ diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticator
#else
//
// Mutex to Serialize Authentication calls.
@@ -146,7 +149,7 @@
Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
"Authentication Mutex lock.");
AutoMutex lock(_authSerializeMutex);
- authenticated = _pamBasicAuthenticatorStandAlone.authenticate(
+ authenticated = _pamBasicAuthenticatorStandAlone->authenticate(
userName, password);
#endif
@@ -156,7 +159,8 @@
Boolean PAMBasicAuthenticator::_authenticateByPAM(
@ -278,7 +268,7 @@ diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticator
// Store the password for PAM authentication
@@ -180,12 +185,28 @@
// "PAMBasicAuthenticator::_authenticateByPAM() - userName = %s; userPassword = %s",
// (const char *)userName.getCString(), (const char *)password.getCString());
// (const char *)userName.getCString(), (const char *)password.getCString()));
+ // NOTE: if any pam call should log anything, our syslog socket will be redirected
+ // to the AUTH facility, so we need to redirect it back after each pam call.
@ -313,7 +303,7 @@ diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticator
- if ( ( pam_authenticate(phandle, 0) ) == PAM_SUCCESS )
+ if ( ( retcode = pam_authenticate(phandle, 0) ) == PAM_SUCCESS )
{
Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
PEG_TRACE_CSTRING(TRC_AUTHENTICATION, Tracer::LEVEL4,
"pam_authenticate successful.");
@@ -202,21 +223,41 @@
//checking for password and account expiration, as well as verifying access
@ -322,7 +312,7 @@ diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticator
- if ( ( pam_acct_mgmt(phandle, 0) ) == PAM_SUCCESS )
+ if ( ( retcode = pam_acct_mgmt(phandle, 0) ) == PAM_SUCCESS )
{
Tracer::trace(TRC_AUTHENTICATION, Tracer::LEVEL4,
PEG_TRACE_CSTRING(TRC_AUTHENTICATION, Tracer::LEVEL4,
"pam_acct_mgmt successful.");
authenticated = true;
}
@ -366,7 +356,7 @@ diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticator
const char *service = "wbem";
pconv.conv = PAMBasicAuthenticator::pamValidateUserCallback;
@@ -240,28 +282,53 @@
@@ -240,9 +282,22 @@
//
// Call pam_start since you need to before making any other PAM calls
//
@ -374,26 +364,24 @@ diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticator
- (const char *)userName.getCString(), &pconv, &phandle) != PAM_SUCCESS)
+ if ( (retcode = pam_start(service,
+ (const char *)userName.getCString(), &pconv, &phandle)) != PAM_SUCCESS)
{
+ {
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_start() failed: %s", pam_strerror(phandle, retcode));
PEG_METHOD_EXIT();
return (authenticated);
}
+ if ( (retcode = pam_set_item(phandle, PAM_TTY, "wbemLocal")) != PAM_SUCCESS )
+ {
+ pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_set_item(PAM_TTY=wbemLocal) failed: %s", pam_strerror(phandle, retcode));
+ PEG_METHOD_EXIT();
+ return (authenticated);
+ }
+
//
// Call pam_acct_mgmt, to check if the user account is valid. This includes
+ if ( (retcode = pam_set_item(phandle, PAM_TTY, "wbemLocal")) != PAM_SUCCESS )
{
+ pam_end(phandle, 0);
+ closelog();
+ openlog("cimserver", LOG_PID, LOG_DAEMON);
+ syslog( LOG_ERR, "pam_set_item(PAM_TTY=wbemLocal) failed: %s", pam_strerror(phandle, retcode));
PEG_METHOD_EXIT();
return (authenticated);
}
@@ -252,16 +307,28 @@
// checking for account expiration, as well as verifying access
// hour restrictions.
//
@ -423,10 +411,10 @@ diff -Nur pegasus.orig/src/Pegasus/Security/Authentication/PAMBasicAuthenticator
#else
//
// Mutex to Serialize Authentication calls.
diff -Nur pegasus.orig/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp pegasus/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp
--- pegasus.orig/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp 2006-11-14 12:34:59.000000000 -0600
+++ pegasus/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp 2007-02-23 00:34:45.000000000 -0600
@@ -281,6 +281,9 @@
diff -Nur pegasus-2.6.1.orig/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp pegasus-2.6.1/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp
--- pegasus-2.6.1.orig/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp 2007-04-04 04:04:52.000000000 -0700
+++ pegasus-2.6.1/src/Pegasus/Server/HTTPAuthenticatorDelegator.cpp 2007-08-17 11:18:15.000000000 -0700
@@ -274,6 +274,9 @@
}
}

View File

@ -1 +1 @@
396243b5781eae66c8a8b187b7f85141 pegasus-2.6.0.tar.gz
fa4c1f760482e7222f4a8790185c09dc pegasus-2.6.1.tar.gz

View File

@ -26,7 +26,7 @@
%if %{NODEBUGINFO}
%define debug_package %{nil}
%endif
%define srcname pegasus
%define srcname pegasus-2.6.1
%define pegasus_gid 65
%define pegasus_uid 66
@ -40,8 +40,8 @@
%endif
%endif
Version: 2.6.0
Release: 2%{?dist}
Version: 2.6.1
Release: 1%{?dist}
Epoch: 2
#
Summary: OpenPegasus WBEM Services for Linux
@ -53,7 +53,7 @@ License: Open Group Pegasus Open Source
#
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%{_target_cpu}-%(%{__id} -u -n)
#
Source: http://www.openpegasus.org/uploads/40/10123/%{srcname}-%{version}.tar.gz
Source: http://www.openpegasus.org/uploads/40/10123/pegasus-%{version}.tar.gz
Source1: README.RedHat.Security
Source2: genOpenPegasusSSLCerts
Source3: pegasus_arch_alternatives
@ -70,13 +70,14 @@ Patch5: pegasus-2.5.1-redhat-config.patch
# 6: don't see how http://cvs.rdg.opengroup.org/bugzilla/show_bug.cgi?id=5099 fixed it
Patch6: pegasus-2.6.0-cmpi-provider-lib.patch
# 7: http://cvs.rdg.opengroup.org/bugzilla/show_bug.cgi?id=5010
Patch7: pegasus-2.6.0-local-or-remote-auth.patch
Patch7: pegasus-2.6.1-local-or-remote-auth.patch
# 8: http://cvs.rdg.opengroup.org/bugzilla/show_bug.cgi?id=5012
Patch8: pegasus-2.5.1-pam-wbem.patch
# 11: http://cvs.rdg.opengroup.org/bugzilla/show_bug.cgi?id=5006
Patch11: pegasus-2.5.1-fix_tests.patch
#
Patch39: pegasus-2.6.0-cimuser.patch
Patch40: pegasus-2.6.1-init_script.patch
#
Conflicts: openwbem
Provides: tog-pegasus-cimserver
@ -138,6 +139,7 @@ The OpenPegasus WBEM tests for the OpenPegasus %{version} Linux rpm.
%patch8 -p1 -b .pam-wbem
%patch11 -p1 -b .fix-tests
%patch39 -p1 -b .cimuser
%patch40 -p1 -b .init_script
find . -name 'CVS' -exec /bin/rm -rf '{}' ';' >/dev/null 2>&1 ||:;
%build
@ -422,6 +424,10 @@ fi
%changelog
* Thu Aug 30 2007 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.6.1-1
- Update to 2.6.1
- Fix wrong init script (#245339)
* Wed Mar 28 2007 Vitezslav Crhonek <vcrhonek@redhat.com> - 2.6.0-2
- Update changelog
- Build with Open Pegasus' Makefiles, istall with RedHats (Mark Hamzy)